javascript - 选择父级没有特定类的所有元素(使用 '.not()' )

标签 javascript jquery html dom dom-traversal

我正在尝试选择所有嵌套在 DOM 树中某处的 .select 类元素。
唯一的限制是,他们不允许有任何父类为 .forbidden

因此它不会在以下树部分中找到任何元素:

<div>
    <div class="forbidden">
        <div>
            <div>
                <div class="select">Some Content</div>
            </div>
        </div>
    </div>
</div>

但会在这里找到 1 个元素:

<div>
    <div>
        <div>
            <div>
                <div>
                    <div class="select">Some Content</div>
                </div>
            </div>
        </div>
    </div>
</div>

如何使用 .not() 函数实现此选择? 像这样:$('.select').not($(this).parents().hasClass('.forbidden'));

最佳答案

您需要检查父元素,closest() 在找到该类的第一个元素时停止,如果选择器有长度,即。包含元素,则在 DOM 树上某处有一个具有该类的元素。

$('.select').filter(function(){
     return !$(this).closest('.forbidden').length;
});

关于javascript - 选择父级没有特定类的所有元素(使用 '.not()' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12057500/

相关文章:

javascript - websocket onclose 未在 chrome 中触发 - linux 当客户端与网络断开连接时

javascript - 使用 JavaScript 将 CSS 更改一次性应用到整个类

javascript - jQuery 删除输出循环上的重复行

html - bootstrap 3 右拉按钮从底部切掉

javascript - 添加正确的值后验证消息不会消失

javascript - 链接中的 "Easter Egg"- 通过 CTRL + 单击激活

javascript - 有没有办法将javascript结果打印到调用javascript函数的div中?

html - 缩小进度条

javascript - 让 google-chrome 浏览器在页面加载时全屏显示

javascript - 类型错误 : undefined is not an object (evaluating '_this3.state.bind' )