我可以在jQuery的find中使用contains吗?

时间:2011-06-22 20:51:55

标签: javascript jquery

我有这个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部分,它会提醒两个值。有没有办法让我能以某种方式包括这个?

这是小提琴:

http://jsfiddle.net/B4wMp/2/

3 个答案:

答案 0 :(得分:5)

删除.find()并将:contains('value')移至选择器

$("tr td:nth-child(2):contains('value')").each(function(){
  alert($(this).parent().attr("id"));
});

小提琴:http://jsfiddle.net/B4wMp/5/

答案 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或将其合并到单个选择器