<div class="container" id = "0" >
<div class="x" id = "1">
<div id = "2">
<p id = "3">
<span id = "4" >text</span>
</p>
<div>
</div>
<div id="5">
<div id="6">
<p id="7">
<span class="x" id="8" >text</span>
<span id="9">text</span>
</p>
<div>
</div>
<div>
你能帮我选择所有元素吗?
查看上面的HTML;它应该选择 5,6,7和9
元素元素8有“X”类
我有这个选择器,但它继续选择带有“X”类的元素的后代(深儿)
var elements = $('.container').find().parents(':not(.X)').andSelf().filter(':not(.X)');
答案 0 :(得分:16)
这应该这样做:
$('.container').find(':not(.x):not(.x *)');
编辑:再次恢复为第一次修订。我认为它不起作用,但你的HTML中有一个错误,它使#1
成为所有元素的父级,因此没有选择。
<div class="container" id = "0" >
<div class="x" id = "1">
<div id = "2">
<p id = "3">
<span id = "4" >text</span>
</p>
<div> <!-- <-- must be a closing div tag -->
</div>
<div id="5">
<div id="6">
<p id="7">
<span class="x" id="8" >text</span>
<span id="9">text</span>
</p>
<div> <!-- <-- must be a closing div tag -->
</div>
<div> <!-- <-- must be a closing div tag -->
答案 1 :(得分:1)
使用通配符
$(".container :not(* .x)")
或
$(":not(* .x)", ".container")
可能会有效。