麻烦找出正确的选择器

时间:2010-10-03 03:48:24

标签: jquery

这有点复杂,所以我会尽力解释。在以下代码中,目标是找到带有文本“(延期交货)”的td,并将​​其替换为带有以下URL的链接

/Email_Me_When_Back_In_Stock.asp?ProductCode=H210-10 

需要从第一个兄弟td中提取“H210-10”,在这种情况下

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

注意:可以有多个tr&gt; td中有“(延期交货)”,我需要为每一个都有“(延期交货)”的人做这件事。我正在努力解决这个问题。我无法访问标记。

<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>

3 个答案:

答案 0 :(得分:2)

看看是否有效:

$('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');
});

答案 1 :(得分:1)

这对我有用:

$("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

答案 2 :(得分:0)

事实证明我确实对标记有一些有限的访问权限,而之前我认为我没有任何访问权限。

我能够在“(延期交付)”文本中添加一个类......

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

通过这样做,我得到了以下有效的Jquery。

<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>

感谢大家的帮助,帮助我搞清楚这一点。