尝试在嵌套的div中使用包含选择器

时间:2010-03-31 08:05:09

标签: jquery contains

<div>
    <div>test</div>
</div>

$("div:contains('test')").css('display','none');

我知道我会为此做好准备。问题是,当运行时,由于嵌套而隐藏所有div。如何使父div不被隐藏?我只能使用1.2.6

2 个答案:

答案 0 :(得分:3)

$("div:contains('test'):not(:has(div))").hide();

答案 1 :(得分:1)

如果您想要一个优雅的解决方案,请定义一个新的选择器。不幸的是,:empty是不够的,因为任何文本节点子节点都不为空。

$.extend($.expr[':'], {
  leaf: function(elem, i, match) {
    return $(elem).children().length == 0;
  }
});

然后你可以这样做:

$("div:leaf:contains('test')").hide();