<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>
?
答案 0 :(得分:10)
$('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";
});
答案 1 :(得分:3)
演示 http://jsfiddle.net/46nC5/1/
由于您特意寻找class b
为您制作演示,因此可以分享。
在这个演示中,您将看到不是我逐渐消失,休息将保持不变。
即。使用:not
+ :has
即可完成
<强>码强>
$('div.b:has(p)').
或强>
$('div.b:not(:has(p))')
答案 2 :(得分:1)
$('div.b').filter(function () {
return $(this).find('p:contains(not me)').length == 0;
})
答案 3 :(得分:1)
答案 4 :(得分:1)
我通常做的最好的方式:
$('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>
答案 5 :(得分:0)
这是另一个
$("div.b:contains('not me')")
编辑:抱歉,这里没有
$("div.b:not(:contains('not me'))")