Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 选择其父元素不为'的所有元素;没有特定的类(使用';.not()';)_Javascript_Jquery_Html_Dom_Dom Traversal - Fatal编程技术网

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