j查询选择器优化
jQuery selector optimization
在选择器的右侧要具体,在左侧要不那么具体。
// unoptimized
$('div.data .gonzalez');
// optimized
$('.data td.gonzalez');
报价来源
有人可以解释为什么不太具体的左边作为CSS选择器更快吗?
这是嘶嘶声的事情还是同样适用于
document.querySelectorAll
?
在 CSS 文件中使用"类似优化"的 CSS 选择器是否有任何速度提升?
jQuery的Sizzle引擎从右到左解析选择器,所以这是真的。但也有一些例外,例如,当第一个操作数是 ID 时。然后,搜索将在具有此 ID 的元素的上下文中运行。这是 Sizzle Engine 的一个特点,但我不知道 querySelectorForAll 是如何实现的。
举个例子:
$('div.data .gonzalez');
嘶嘶声将获取带有类冈萨雷斯的所有 DOM 元素,然后检查每个元素的祖先是否是带有类数据的div 标签
便提到了这一点,但我相当确定建议是特定于 Sizzle(jQuery 选择器引擎)的,而不是一般的。您的里程可能会有所不同,但实现querySelectorAll
的浏览器不太可能显示现实世界的差异。
适当的时候由内而外工作,因此可能会寻找td.gonzales
,然后查看它是否在.data
内,而不是相反。我记得当Sizzle第一次出现时,这有点令人惊讶,但实际上效果更好。因此,您可以看到为什么后代选择器的右侧越具体越好。
这是一个测试用例,在IE7中尝试一下,你会看到对更具体的右侧的明显偏好。但是在现代浏览器中尝试一下,您似乎基本上没有区别。
不过,这都是微优化,在没有实际问题需要解决的情况下几乎毫无用处,因为它会根据页面上的元素而有很大差异。记住您是否实际上有一个缓慢的选择器导致您在旧浏览器上遇到麻烦很有用,但除此之外......
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 在动态创建的元素上获取对特定选择器的引用
- AngularJS-在JSON选择器中使用变量名
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- 使用CSS或js,使用动态选择器选择任意li的下一个元素
- jQuery最近父级的数据属性选择器
- 为什么不'在JQuery中找到第二个css选择器的工作
- 为什么 .focus() 不起作用,而 .css(“color”,“red”) 在同一个选择器上起作用
- jquery IE7中的第n个选择器
- Webdriver.io pageObject模式-通过传递参数来定义元素选择器
- jquery日期选择器年份范围默认值
- jquery日期选择器失去了交互性
- 优化复选框的 jQuery 选择器
- 优化 jQuery 选择器
- 在jQuery中优化实时元素的选择器
- JQuery选择器-完全或优化扫描
- Jquery选择器优化
- j查询选择器优化
- jQuery视频悬停优化动态选择器
- 优化jQuery选择器的最佳方法及其原因