【发布时间】:2014-09-04 22:08:13
【问题描述】:
我想从 DOM 中选择一组元素及其子元素。
然后,我想在 DOM 上运行一组排除这些元素的选择,就好像它们已被删除一样。
.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 元素,并排除选择器在这些页面上的匹配。
编辑:我创建了一个 jsFiddle 来演示我在说什么:http://jsfiddle.net/glassdimly/H4tJe/4/
【问题讨论】:
-
not()不会匹配父母和孩子。如果无法针对实时 html 进行测试以查看您的问题所在,那么任何人都很难提供帮助。 jsfiddle.net 上的演示会有所帮助 -
听起来你需要一个
filter,一个closest('.page-node')等等,但是用有点模糊的描述很难说出来? -
好的,伙计们,我添加了一个 jsFiddle。如果不清楚,请告诉我:jsfiddle.net/glassdimly/H4tJe/4
标签: javascript jquery dom jquery-selectors