jQuery选择器DOM遍历方向和效率

Posted

技术标签:

【中文标题】jQuery选择器DOM遍历方向和效率【英文标题】:jQuery selector DOM traversal direction and efficiency 【发布时间】:2011-06-11 06:21:06 【问题描述】:

多部分jQuery选择器的标准搜索方向是什么?

例如案例

$('#myTable tr.selected');

是先搜索#myTable,然后再搜索tr.selected 只在该表内吗?

还是第一次搜索页面上的所有tr.selected,第二次搜索检查每个父节点?

【问题讨论】:

【参考方案1】:

你应该看this talk by John Resig on the subject。他说,与您的预期相反,选择器引擎将搜索tr.selected,然后查看祖先是否匹配#myTable

【讨论】:

这是我相信 css 的工作方式,这就是我提出这个问题的原因。这表明通常情况下,您向选择器提供的信息越少,它的效率就越高。 我不确定。由于 jQuery 使用 Sizzle,而 Sizzle 使用querySelectorAll(如果可用),答案可能是“视情况而定”。不同的浏览器可能会做不同的事情并且可能有不同的优化。除非有一些标准明确指定用户代理在使用 querySelectorAll 时应该如何遍历 DOM。 我认为您上面的评论是正确的。在视频中(我还没有看过,但感谢发布它),John 一定是在谈论基于 javascript 的竞争选择器引擎之间的比较。对吗? 他确实提到了一些东西,但说实话细节有点模糊 - 我已经有一段时间没有看了 :)【参考方案2】:

第一次搜索 #myTable,然后 tr.selected 搜索仅在该表内

首先它查找一个id为myTable的元素,然后查找带有selected类的'tr'标签的后代

【讨论】:

以上是关于jQuery选择器DOM遍历方向和效率的主要内容,如果未能解决你的问题,请参考以下文章

JQuery总结:选择器归纳DOM遍历和事件处理DOM完全操作和动画

JQuery总结:选择器归纳DOM遍历和事件处理DOM完全操作和动画

jQuery ---[jQuery选择器,jQuery对象的遍历]

jQuery部分选择器示例

JQuery

JQuery选择器