Javascript 选择其父元素不为'的所有元素;没有特定的类(使用';.not()';)
我正在尝试选择类Javascript 选择其父元素不为'的所有元素;没有特定的类(使用';.not()';),javascript,jquery,html,dom,dom-traversal,Javascript,Jquery,Html,Dom,Dom Traversal,我正在尝试选择类中的所有元素。选择嵌套在DOM树中某处的。 唯一的限制是,他们不允许有任何父类。禁止 因此在以下树部分中找不到任何元素: <div> <div class="forbidden"> <div> <div> <div class="select">Some Content</div> </div>
中的所有元素。选择嵌套在DOM树中某处的。
唯一的限制是,他们不允许有任何父类。禁止
因此在以下树部分中找不到任何元素:
<div>
<div class="forbidden">
<div>
<div>
<div class="select">Some Content</div>
</div>
</div>
</div>
</div>
一些内容
但这里有一个元素:
<div>
<div>
<div>
<div>
<div>
<div class="select">Some Content</div>
</div>
</div>
</div>
</div>
</div>
一些内容
如何使用.not()
函数实现此选择?
类似这样的内容:$('.select').not($(this.parents().hasClass('.forbidden'))代码>我不会使用:不
但我会使用:
请注意,如果集合中至少有一个元素(此处为父元素)与选择器匹配,则返回true。我不会使用:not
但我会使用:
请注意,如果集合中至少有一个元素(此处为父元素)与选择器匹配,则返回true。您需要检查父元素,并且最接近()
会在该类中找到的第一个元素处停止,如果选择器具有长度,即包含元素,则DOM树上的某个位置有该类的元素
$('.select').filter(function(){
return !$(this).closest('.forbidden').length;
});
您需要检查父元素,并且closest()
$('.select').filter(function(){
return !$(this).closest('.forbidden').length;
});
我更喜欢这个解决方案,因为它可以让您决定向上检查DOM树的级别;您可以使用parents()
、parentsUntil()
或只检查一个级别的parent()
;您可以使用parents()
、parentsUntil()
或只检查上一级的parent()
。
$('.select').filter(function(){
return !$(this).closest('.forbidden').length;
});