选择除一个之外的所有div

时间:2012-06-13 09:57:03

标签: javascript jquery jquery-selectors dom-traversal

<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>

6 个答案:

答案 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";
});

Live DEMO

答案 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;
})

jsFiddle Demo

答案 3 :(得分:1)

这将为您提供两个div class =&#34; b&#34; 没有p (段落)

Live Demo

$('div.b:not(:has(p))')

答案 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'))")