2010-10-03 4 views
0

C'est un peu compliqué alors je vais essayer de vous expliquer le mieux possible. Dans le code suivant l'objectif est de trouver un td avec le texte « (Backordered) » et le remplacer par un lien avec l'URL suivanteDifficulté à trouver le bon sélecteur

/Email_Me_When_Back_In_Stock.asp?ProductCode=H210-10 

Le « H210-10 » doit être extrait du 1er frères et soeurs td, dans ce cas

<td class="smalltext colors_text">H210-10</td> 

note: il peut y avoir plus d'un tr> td avec « (Backorder) » en elle et je dois le faire pour chacun qui a « (Backorder) » dans il. Je me bats sur la façon d'aborder ce problème. Je n'ai pas accès au balisage.

<table cellspacing="1" cellpadding="3" border="0" bgcolor="#cccccc"> 
<tr class="colors_backgroundlight"> 
<td>Item#</td> 
<td>Item Name</td> 
<td>Our Price</td> 
<td>Qty</td> 
<td><b>Add</b></td> 
</tr> 
<tr bgcolor="#ffffff" class="Multi-Child_Background"> 
<td class="smalltext colors_text">H211-41</td> 
<td class="productnamecolorSMALL colors_productname">J. Herbin Small Glass Dip Pen - Amber Frosted</td> 
<td class="smalltext colors_text"><b>$15.75</b></td> 
<td><input type="textbox" value="1" name="QTY.H211-41" maxlength="8" size="5"></td> 
<td><input type="checkbox" value="H211-41" name="ProductCode"></td> 
</tr> 
<tr bgcolor="#ffffff" class="Multi-Child_Background"> 
<td class="smalltext colors_text">H211-09</td> 
<td class="productnamecolorSMALL colors_productname">J. Herbin Small Glass Dip Pen - Black Frosted</td> 
<td class="smalltext colors_text"><b>$15.75</b></td> 
<td><input type="textbox" value="1" name="QTY.H211-09" maxlength="8" size="5"></td> 
<td><input type="checkbox" value="H211-09" name="ProductCode"></td> 
</tr> 
<tr bgcolor="#ffffff" class="Multi-Child_Background"> 
<td class="smalltext colors_text">H210-10</td> 
<td class="productnamecolorSMALL colors_productname">J. Herbin Small Glass Dip Pen - Blue Striped</td> 
<td class="smalltext colors_text"><b>$15.75</b></td> 
<td colspan="2"><b><font color="#cc0000"><span class="331">(Backordered)</span> 
</font></b></td> 
</tr> 
<tr bgcolor="#ffffff" class="Multi-Child_Background"> 
<td class="smalltext colors_text">H210-30</td> 
<td class="productnamecolorSMALL colors_productname">J. Herbin Small Glass Dip Pen - Green Striped</td> 
<td class="smalltext colors_text"><b>$15.75</b></td> 
<td><input type="textbox" value="1" name="QTY.H210-30" maxlength="8" size="5"></td> 
<td><input type="checkbox" value="H210-30" name="ProductCode"></td> 
</tr> 
<tr bgcolor="#ffffff" class="Multi-Child_Background"> 
<td class="smalltext colors_text">H210-20</td> 
<td class="productnamecolorSMALL colors_productname">J. Herbin Small Glass Dip Pen - Red Striped</td> 
<td class="smalltext colors_text"><b>$15.75</b></td> 
<td><input type="textbox" value="1" name="QTY.H210-20" maxlength="8" size="5"></td> 
<td><input type="checkbox" value="H210-20" name="ProductCode"></td> 
</tr> 
<tr bgcolor="#ffffff" class="Multi-Child_Background"> 
<td class="smalltext colors_text">H211-77</td> 
<td class="productnamecolorSMALL colors_productname">J. Herbin Small Glass Dip Pen - Violet Frosted</td> 
<td class="smalltext colors_text"><b>$15.75</b></td> 
<td><input type="textbox" value="1" name="QTY.H211-77" maxlength="8" size="5"></td> 
<td><input type="checkbox" value="H211-77" name="ProductCode"></td> 
</tr> 
<tr><td bgcolor="#ffffff" align="right" class="smalltext colors_text Multi-Child_Background" colspan="5">Check the items you wish to purchase, then click 
<input type="hidden" value="Y" name="IsMultiChildAddToCart"> 
<input type="hidden" value="ShoppingCart.asp" name="ReturnTo"> 
<input border="0" type="image" alt="J. Herbin Small Glass Dip Pen" name="btnaddtocart" src="/v/vspfiles/templates/140/images/buttons/btn_addtocart.gif"> 
</td></tr></table> 

Répondre

0

Il se trouve que j'ai eu quelques accès limité au balisage alors que avant je pensais que je n'avais aucun accès.

j'ai pu ajouter une classe à « (rupture de stock) » texte en tant que tel ...

<span class="331">(Backordered)</span> 

et en faisant que je suis de la Jquery suivante qui a fonctionné.

<script type="text/javascript" language="javascript"> 
$(document).ready(function(){ 
$('.331').each(function(){ 
$(this).closest('td').replaceWith('<td colspan="2"><a href="/Email_Me_When_Back_In_Stock.asp?ProductCode=' + $(this).closest('td').siblings(':first-child').text() + '"><img border="0" src="/v/vspfiles/templates/140/images/buttons/btn_emailbackinstock.gif"</a></tr>'); 
}); 
}); 
</script> 

Merci à tous pour votre aide qui m'a aidé à comprendre cela.

2

Voir si cela fonctionne:

$('td:contains("(Backordered)")').each(function(){ 
    $this = $(this).html(''); 

    $('<a />').appendTo(this).attr('href', '/Email_Me_When_Back_In_Stock.asp?ProductCode=' + $this.siblings(':first-child').text()).text('Backorder'); 
}); 
+0

Merci, mais cela ne fonctionne pas dans mon code, mais semble fonctionner dans jsFiddle ???? – user357034

+0

Une inspection plus approfondie est effectuée mais supprime tout le code ci-dessus de la page à l'exception du lien remplacé – user357034

+0

@user Vous ne savez pas exactement quelle partie fonctionne/ne fonctionne pas. Pouvez-vous clarifier un peu? Peut-être que vous pouvez essayer de supprimer le '.empty()' –

1

Cela fonctionne pour moi:

$("td:contains('(Backordered)')").each(function() { 
    var item = $(this).closest('tr').find('td:first') 
    var code = $(item).text(); 
    $(item).html('<a href="/Email_Me_When_Back_In_Stock.asp?ProductCode='+code+'">'+code+'</a>'); 
});​​​​​​​​​​​​​​​​ 

and the js fiddle

+0

Merci, cela est utile, mais je ne veux pas faire le texte original "H210-10" dans une ancre, mais je veux remplacer le texte (Backorder) avec le lien. Je veux vraiment un bouton avec lien mais autant je pense que je peux le faire. Juste avoir du mal avec le remplacement du "(Backorder)" texte en ce moment – user357034

Questions connexes