我有这个HTML:
<table>
<tr id="1"><td>test</td><td id="90">value</td></tr>
<tr id="2"><td>another</td><td id="98">somthing</td></tr>
</table>
和这个jquery:
$("tr td:nth-child(2)").find(":contains('value')").each(function(){
alert($(this).parent().attr("id"));
});
我原以为这会起作用,但它没有提醒任何事情。如果我删除了find
部分,它会提醒两个值。有没有办法让我能以某种方式包括这个?
这是小提琴:
答案 0 :(得分:5)
删除.find()
并将:contains('value')
移至选择器
$("tr td:nth-child(2):contains('value')").each(function(){
alert($(this).parent().attr("id"));
});
答案 1 :(得分:5)
正确的方法是这样的:
$("tr td:nth-child(2):contains('value')").each(function(){
alert($(this).parent().attr("id"));
});
为什么它没有像你写的那样工作?因为从第一个选择器中得到td,其中包含单词“value”,td中包含单词“something”。获得该选择后,在这些元素上运行.find(“...”)开始寻找您当前所拥有的元素。由于两个tds中都没有任何其他元素,因此.find()选择器不返回任何内容。
答案 2 :(得分:1)
您使用的是find
,但正在寻找您已选择的td
元素的子代。您的td
元素中没有任何子女。
您想使用filter
或将其合并到单个选择器