繁体   English   中英

使用jQuery提高选择器性能

[英]Improve selectors performance with jQuery

我一直在看一些站点,他们都在谈论使用标记选择器而不是类来提高性能。

例如,这:

$("input.myclass");

代替这个:

$(".myclass");

例如:

他们都声称JavaScript仅具有getElementByIdgetElementsbyTagName而不能直接选择类。

过去3年有没有改变? 他们现在可以按班级进行选择了吗? 我正在用jsperf进行测试,看来到目前为止,类选择器的速度更快: http ://jsperf.com/class-vs-input

我还查看了其他人的测试并显示了相同的结果: http : //jsperf.com/selectors-perf/3

去年这些改变了吗? 我们现在应该按类而不是按标签选择吗? 在哪里可以看到本机实现类选择器的浏览器版本?

谢谢。

现在已经改变了。

大多数浏览器正在实现:

var matches = document.body.querySelectorAll('div.highlighted > p');

在javascript中实现它们。

那就是jQuery现在使用的东西; 它正在实现sizzle.js,这是一个选择器js库,用于选择是使用querySelector还是常规的getElementsByTagName函数。

例如,对于jquery构造函数$()如果第一个argumemt是字符串: $(iAmAString) ,则如果字符串的第一个字母是# ,则jquery将调用document.getElementById(iAmAString.substr(0)) 如果不是,它将让sizzle处理是否根据浏览器的兼容性和字符串的复杂性调用querySelector。

还有很多其他很棒的东西。

选择基本元素,使用基本函数并缓存常用的选择器时,最精确的做法将减少通过该大链和/或绕开整个链时的检查次数。

对于某些网站,这具有产生令人敬畏的独角兽骑行小猫效果的特殊效果,还需说明:

兼容性支持在这里https://developer.mozilla.org/en-US/docs/Web/API/Element.querySelectorAll

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM