【发布时间】:2011-01-09 08:01:54
【问题描述】:
这更像是一个好奇的问题。执行以下操作时:
$('.selector1, .selector2').doSomething()
jQuery 是完全遍历 DOM 两次以获取与每个选择器匹配的每组对象,还是在一次遍历 DOM 中找到所有元素?
【问题讨论】:
-
我不这么认为,因为从我在核心中看到的内容来看,匹配是在各种节点属性(nodeName、NodeType、id 等)上使用正则表达式完成的。所以任何单个选择器都会产生一次 DOM 迭代.但是,我对此不是 100% 肯定的,所以我会遵从其他更熟悉内部结构的人 :-)
-
实际上这个例子很糟糕,因为
<selector2>节点在 HTML 中不存在 :) -
我想你要做的是找到选择器引擎 Sizzle,你可以看看它的源代码:github.com/jeresig/sizzlegithub.com/jeresig/sizzle/blob/master/sizzle.js
-
@KARASZI 'doh!被一个错字挫败!我会解决的。 ;o)
标签: jquery jquery-selectors dom-traversal