<div id="main">
<div class="a"></div>
<div class="b"><p>not me</p></div>
<div class="b"></div>
<div class="b"></div>
<div class="c"></div>
</div>
我们如何编写一个选择器来选择all divs with class b
除了谁的孩子之外<p>not me</p>
?
<div id="main">
<div class="a"></div>
<div class="b"><p>not me</p></div>
<div class="b"></div>
<div class="b"></div>
<div class="c"></div>
</div>
我们如何编写一个选择器来选择all divs with class b
除了谁的孩子之外<p>not me</p>
?
$('div.b:not(:has(p))').........
或可读版本
$('div.b').filter(function(){
return !$(this).find('p').length;
});
如果你也想匹配内容:
$('div.b').filter(function(){
return $(this).find('p').text() !== "not me";
});
演示 http://jsfiddle.net/46nC5/1/
由于您正在专门寻找为class b
您制作的演示,因此分享。
在此演示中,您将看到 not me 逐渐消失,其余部分将保持原样。
即用:not
+:has
可以做到
代码
$('div.b:has(p)').
或者
$('div.b:not(:has(p))')
$('div.b').filter(function () {
return $(this).find('p:contains(not me)').length == 0;
})
我通常做的最好的方法:
$('div.b').filter(function () {
return !$(this).hasClass('notMe');
});
<div id="main">
<div class="a"></div>
<div class="b notMe"><p>not me</p></div>
<div class="b"></div>
<div class="b"></div>
<div class="c"></div>
</div>
这是另一个
$("div.b:contains('not me')")
编辑:对不起,这里没有
$("div.b:not(:contains('not me'))")