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

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

我知道我会在这件事上自责。问题是,当它运行时,所有 div 由于嵌套而被隐藏。如何使父 div 不被隐藏?我仅限于使用 1.2.6

4

2 回答 2

3
$("div:contains('test'):not(:has(div))").hide();
于 2010-03-31T08:06:41.530 回答
1

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

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

然后你可以这样做:

$("div:leaf:contains('test')").hide();
于 2010-03-31T08:17:31.840 回答