jquery类选择器与限定类选择器

时间:2014-12-30 11:39:33

标签: jquery performance class jquery-selectors selector

我目前正在编写关于webperformance的单一解释,并且发现了一些我没想到的结果。

正如Paul Irish或jquery本身所建议的那样,总是最好从身份下降。

http://learn.jquery.com/performance/optimize-selectors/

所以我原以为$('。class')应该慢于$('#id class')或$('#id')。find('。class')。

我在jsperf上测试了它并得出了一个非常有趣的结果:

http://jsperf.com/selektor/2

Results http://fs1.directupload.net/images/141230/5euuefin.png

这似乎真的取决于浏览器,但我真的没想到$('。class')表现得如此之好,特别是在Chrome上它比那些从id下降的人更快。

对我来说有意义的是以下解释,但为什么这些浏览器的差异如此之大。发动机是如此不同?

  

不同之处在于使用单个类或id查找时,可以使用getElementsByClassName和getElementById,这比querySelector快。在现代浏览器中,你会发现它快了10倍。

来源:http://jsperf.com/jquery-class-vs-tag-qualfied-class-selector/38

那你对此有什么看法?

1 个答案:

答案 0 :(得分:1)

回答你问题中唯一真实的问题:“对我来说有意义的是以下解释,但为什么这些浏览器的差异如此之大。引擎是如此不同?

答案当然是“是”。这三种浏览器都源于不同的代码库,不同的编码方法将导致速度差异显着不同。例如“向3位编码人员询问解决方案,你将得到3种不同的解决方案”:)

最值得注意的是,搜索在现代浏览器上实际上非常快,尽管有相反的建议。添加其他检查(甚至ID选择器)只会减慢类搜索速度。这意味着大多数(如果不是全部)现代浏览器都会保留类与元素的缓存。这可能是为了加快CSS处理速度,但副作用也是基于类的快速搜索。