我有一个像这样的人:
<div class=main>
<div class="child"></div>
</div>
<div class=main>
<div class="child b"></div>
</div>
<div class=main>
<div class="child"></div>
</div>
<div class=main>
<div class="child b"></div>
</div>
我想选择感谢jquery所有主要的div元素,它有一个没有类“b”的孩子。所以我会得到第一个和第三个元素。 这就是我所做的,它不起作用,它返回了我所有的元素:
$(".main").not(".b")
我也尝试了这个,但它抛出了一个例外“无效令牌”:
$(".main").not(":.b")
提前感谢您的帮助
答案 0 :(得分:3)
您需要使用合并:not
和:has
选择器:
$('.main:not(:has(".b"))');
或找到没有类b的子元素,然后使用.parent()
选择器遍历这些元素parent:
$('.child:not(".b")').parent()
答案 1 :(得分:1)
CSS选择器无法提升。你不能拥有孩子的父母。因此,您只能使用一个选择器来执行此操作。但你可以这样做:
var elements = $('.main').filter(function() {
return !$(this).children('.b');
});
答案 2 :(得分:1)
$('.main:not(:has(".b"))')
或您可以使用:
$('.child:not(.b)').closest('.main');
答案 3 :(得分:0)
$('.main').find('[class=child]')
- 这将给出只有子类的两个元素。
$('.main').find('[class^=child]')
- 这将返回所有4个子类元素
答案 4 :(得分:0)
你也可以尝试这样:
$(".main").children().not(".b");
由于“child”类元素是“main”类元素的子元素,因此不能直接使用$(".main").not(".b");
- 这将在父级别进行检查。
答案 5 :(得分:0)
映射那些精确的说明。
$('.main').map(function(){ if ($(this).find('div').not('.child.b').length > 0) return this; });
答案 6 :(得分:-1)
你不能像这样直接使用。 您可以使用$ .each()循环
获得所需的输出 $.each($("div .main"),function(){
if(this).not(".b")
{
return this;
}
});