首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从选择中排除匹配的DOM &子元素?

从选择中排除匹配的DOM &子元素?
EN

Stack Overflow用户
提问于 2014-07-14 21:01:03
回答 1查看 512关注 0票数 0

我想从DOM中选择一组元素及其子元素。

然后,我想在DOM上运行一组选择,排除这些元素,就好像它们被删除了一样。

.not()似乎同时匹配父元素和子元素,并且没有正确地排除。

.find(':not(.myclass)')返回一个关于bajillion元素的列表,并且没有正确地排除。

我有什么麻烦?这看起来很简单,但是我希望这样做的函数不像我所期望的那样运行。

我考虑过克隆DOM,删除元素,然后在克隆的DOM上运行我的选择匹配。但这似乎是不好的。就像,一场重大的演出热。

做这件事最好的方法是什么?

下面是我的代码:

代码语言:javascript
运行
复制
jQuery('html').not(".page-node,.quote").find(selector).each(function(){
//do stuff here to returned elements

.page-node是一个body类,应该在几乎所有页面上返回body元素,并将选择器排除在这些页面上。

编辑:我创建了一个jsFiddle来演示我所说的内容:http://jsfiddle.net/glassdimly/H4tJe/4/

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-14 21:07:13

Not()将使用适当的后代选择器。任何选择器后面的*将匹配所有后代(子女、孙辈等)。通过在not中应用它,您可以要求将所有后代排除在匹配之外。由于您还希望排除父级,所以也要在not中包括它:

例如:

代码语言:javascript
运行
复制
$(selector).not(".page-node,.page-node *,.quote,.quote *")

,它等同于:"Not具有类page-node或和page-node的子代/后代“或"Not具有类quote或任何quote的子代/后代”。

更新的JSFiddle:http://jsfiddle.net/TrueBlueAussie/H4tJe/7/

代码语言:javascript
运行
复制
jQuery(document).find('.list').not('.exclude,.exclude *').each(function(){
    this.remove();
});

,它等同于“查找所有项都有类list,但排除任何也具有类exclude的项,也不包括任何具有exclude类的元素的后代”。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24745899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档