Jam*_*tta 1 html javascript jquery dom dom-traversal
我试图选择所有.select在DOM树中嵌套的类的元素.
唯一的限制是,他们不允许有任何家长.forbidden.
所以它在后面的树部分找不到任何元素:
<div>
<div class="forbidden">
<div>
<div>
<div class="select">Some Content</div>
</div>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
但是会在这里找到1个元素:
<div>
<div>
<div>
<div>
<div>
<div class="select">Some Content</div>
</div>
</div>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
如何使用该.not()功能实现此选择?像这样的东西: $('.select').not($(this).parents().hasClass('.forbidden'));
您需要检查父元素,并closest()在使用该类找到的第一个元素处停止,并且如果选择器具有长度,即.包含元素,在DOM树的某个地方有一个元素.
$('.select').filter(function(){
return !$(this).closest('.forbidden').length;
});
Run Code Online (Sandbox Code Playgroud)