选择父母没有某个班级的所有元素(使用'.not()')

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'));

ade*_*neo 6

您需要检查父元素,并closest()在使用该类找到的第一个元素处停止,并且如果选择器具有长度,即.包含元素,在DOM树的某个地方有一个元素.

$('.select').filter(function(){
     return !$(this).closest('.forbidden').length;
});
Run Code Online (Sandbox Code Playgroud)