2012-12-26 51 views
3

我有以下HTML:jQuery的性能 - 类选择

<div class="foo"> 
    <div class="bar"> 
     <div class="target"> 
     </div> 
    </div> 
</div> 

哪个选择是更有效?

  • $('.foo > .bar > .target')
  • $('.foo .bar .target')
  • $('.target')

难道我正确地订购它们? :)

+6

所有这些都是不同的。比较它们有什么意义? – Alexander

+4

@tamir不要被这样的微观性能问题困扰。编写足够满足您需求的选择器,并且不要太担心这种类型的东西。 – Sampson

+0

@Alexander不是真的..至少不是他发布的HTML。 :P –

回答

8

要小心,不要过于担心这些类型的问题 - 微观优化可能会毁了一个项目。不是不时思考不好,而是谨慎小心。

如果你仍然想知道哪三个更快,你可以通过http://jsperf.com设置一个快速的性能测试,并给他们三个对这个标记的运行。幸运的是,我救了你的麻烦和设置测试自己;)http://jsperf.com/css-selector-specificity

结果:

       Ops/Sec 
----------------------------+---------+--------+------------ 
$('.foo > .bar > .target'); | 78,379 | ±6.54% | 65% slower 
$('.foo .bar .target');  | 78,499 | ±7.72% | 66% slower 
$('.target');    | 213,488 | ±0.39% | fastest 

正如你所看到的,最简单的三快得多。您的结果因浏览器而异。例如,上述内容来自Chrome版本23.当我在Internet Explorer 10中运行此测试时,速度更快,每秒超过216,000次操作。

+0

谢谢,很好的回答! – tamir