选择除一个以外的所有 div
Posted
技术标签:
【中文标题】选择除一个以外的所有 div【英文标题】:Selecting all divs except one 【发布时间】:2012-06-16 06:25:28 【问题描述】:<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>
的孩子?
【问题讨论】:
【参考方案1】:$('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
【讨论】:
或介于两个选项之间:$('div.b').not(':has(p)')
。关于最后一个选项,我知道示例标记没有这个问题,但如果特定 div 有多个段落怎么办?【参考方案2】:
演示 http://jsfiddle.net/46nC5/1/
由于你是专门找class b
所以做了一个demo给你分享一下。
在此演示中,您将看到 not me 逐渐消失,其余部分将保持原样。
即使用:not
+ :has
可以做到
代码
$('div.b:has(p)').
或
$('div.b:not(:has(p))')
【讨论】:
【参考方案3】:$('div.b').filter(function ()
return $(this).find('p:contains(not me)').length == 0;
)
jsFiddle Demo
【讨论】:
【参考方案4】:我通常做的最好的方法:
$('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】:这将为您提供 两个 div,它们具有 class="b" 和 没有 p(段落)
Live Demo
$('div.b:not(:has(p))')
【讨论】:
【参考方案6】:还有一个
$("div.b:contains('not me')")
编辑:对不起,这里没有
$("div.b:not(:contains('not me'))")
【讨论】:
以上是关于选择除一个以外的所有 div的主要内容,如果未能解决你的问题,请参考以下文章