【发布时间】:2011-06-11 06:21:06
【问题描述】:
多部分jQuery选择器的标准搜索方向是什么?
例如案例
$('#myTable tr.selected');
是先搜索#myTable,然后再搜索tr.selected 只在该表内吗?
还是第一次搜索页面上的所有tr.selected,第二次搜索检查每个父节点?
【问题讨论】:
标签: jquery jquery-selectors performance dom-traversal
多部分jQuery选择器的标准搜索方向是什么?
例如案例
$('#myTable tr.selected');
是先搜索#myTable,然后再搜索tr.selected 只在该表内吗?
还是第一次搜索页面上的所有tr.selected,第二次搜索检查每个父节点?
【问题讨论】:
标签: jquery jquery-selectors performance dom-traversal
你应该看this talk by John Resig on the subject。他说,与您的预期相反,选择器引擎将搜索tr.selected,然后查看祖先是否匹配#myTable。
【讨论】:
querySelectorAll(如果可用),答案可能是“视情况而定”。不同的浏览器可能会做不同的事情并且可能有不同的优化。除非有一些标准明确指定用户代理在使用 querySelectorAll 时应该如何遍历 DOM。
第一次搜索 #myTable,然后 tr.selected 搜索仅在该表内
首先它查找一个id为myTable的元素,然后查找带有selected类的'tr'标签的后代
【讨论】: