Javascript 选择除一个div之外的所有div
不是我 我们如何编写一个选择器来选择Javascript 选择除一个div之外的所有div,javascript,jquery,jquery-selectors,dom-traversal,Javascript,Jquery,Jquery Selectors,Dom Traversal,不是我 我们如何编写一个选择器来选择所有b类div,除了其子级是而不是我的div <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">
所有b类div
,除了其子级是而不是我的div
<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>
还是可读版本
$('div.b:not(:has(p))').........
如果您也想匹配内容,请执行以下操作:
$('div.b').filter(function(){
return !$(this).find('p').length;
});
演示
由于您专门寻找b类
,因此为您制作了一个演示,并与大家分享
在这个演示中,您将看到“不是我”逐渐淡出,其余的将保持原样
i、 e.使用:not
+:has
可以完成
代码
$('div.b').filter(function(){
return $(this).find('p').text() !== "not me";
});
或
$('div.b:has(p)').
这是另一个
$('div.b').filter(function () {
return $(this).find('p:contains(not me)').length == 0;
})
编辑:对不起,这是一张没有
$("div.b:contains('not me')")
这将给你两个div,他们有class=“b”,而没有p(段落)
我通常做的最好的方式是:
$('div.b:not(:has(p))')
$('div.b')。过滤器(函数(){
return!$(this.hasClass('notMe');
});
不是我
或两个选项之间的中间值:$('div.b')。not('has(p)')
。关于最后一个选项,我知道示例标记没有这个问题,但是如果一个特定的div有多个段落呢?
$("div.b:not(:contains('not me'))")
$('div.b:not(:has(p))')
$('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>