Javascript 排除匹配的DOM&;选择的孩子?
我想从DOM中选择一组元素及其子元素 然后,我想在DOM上运行一组排除这些元素的选择,就像它们被删除一样Javascript 排除匹配的DOM&;选择的孩子?,javascript,jquery,dom,jquery-selectors,Javascript,Jquery,Dom,Jquery Selectors,我想从DOM中选择一组元素及其子元素 然后,我想在DOM上运行一组排除这些元素的选择,就像它们被删除一样 .not()似乎同时匹配父元素和子元素,并且不能正确排除 .find(':not(.myclass)返回一个关于bajillion元素的列表,并且不会正确排除 我有什么问题?这看起来很简单,但我期望实现的函数的行为与我期望的不一样 我考虑克隆DOM,删除元素,然后在克隆的DOM上运行我的选择匹配。。。但这似乎很糟糕。比如说,一次重大的演出 最好的方法是什么 以下是我的代码: jQuery('
.not()
似乎同时匹配父元素和子元素,并且不能正确排除
.find(':not(.myclass)
返回一个关于bajillion元素的列表,并且不会正确排除
我有什么问题?这看起来很简单,但我期望实现的函数的行为与我期望的不一样
我考虑克隆DOM,删除元素,然后在克隆的DOM上运行我的选择匹配。。。但这似乎很糟糕。比如说,一次重大的演出
最好的方法是什么
以下是我的代码:
jQuery('html').not(".page-node,.quote").find(selector).each(function(){
//do stuff here to returned elements
.page node
是一个body类,应该在几乎所有页面上返回body元素,并排除那些页面上匹配的选择器
编辑:我创建了一个JSFIDLE来演示我所说的内容:Not()
将使用适当的后代选择器。任何选择器后面的*
都将匹配所有子代(子代、孙辈等)。通过在not
中应用它,可以要求将所有子体从匹配中排除。由于您还希望排除父项,请将其也包括在not
中:
例如
这相当于:
“没有类页面节点
或页面节点
的子/后代”或“没有类引用
或引用
的任何子/后代”
更新的JSFIDLE:
这相当于“查找所有具有类
列表的项,但排除任何也具有类排除的项,并排除任何具有类排除的元素的子元素”不()
将不匹配父项和子项。对于任何人来说,如果不能够通过测试live html来了解问题所在,就很难提供帮助。在jsfiddle.net上的一个演示对我来说很有帮助,听起来好像你需要一个过滤器,带有一个最近的('.page node')
等等。但是用一个模糊的描述很难说出来?好了,伙计们,我添加了一个jsfiddle。如果不清楚,请告诉我:谢谢。但我想删除“selector”的父级,导致“selector”不尝试匹配排除的父级。规则何时更改:“一组元素及其子元素”?:)@杰里米·约翰:我已经更新了你的小提琴,向你展示了如何使用后代选择器。太好了,谢谢你花时间向我解释。我丢失的是*选择器。
$(selector).not(".page-node,.page-node *,.quote,.quote *")
jQuery(document).find('.list').not('.exclude,.exclude *').each(function(){
this.remove();
});