jQuery性能-类选择器

jQuery性能-类选择器,jquery,jquery-selectors,Jquery,Jquery Selectors,我有以下HTML: <div class="foo"> <div class="bar"> <div class="target"> </div> </div> </div> 哪个选择器更有效 $('.foo>.bar>.target') $('.foo.bar.target') $('.target') 我点对了吗?:) $(“#foo”)是最有效的 但是 $('.

我有以下HTML:

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

哪个选择器更有效

  • $('.foo>.bar>.target')
  • $('.foo.bar.target')
  • $('.target')
我点对了吗?:)

$(“#foo”)是最有效的 但是 $('.foo').find(“.target”)
我读过的是最好的

小心不要太陷入这些类型的问题中-微观优化真的会毁掉一个项目。不是说不停地思考是不好的,而是真诚地,要谨慎

如果您仍然想知道这三个测试中哪一个更快,您可以通过设置一个快速性能测试,并根据该标记运行这三个测试。幸运的是,我为您省去了麻烦,自己设置了测试;)

结果:

Ops/秒
----------------------------+---------+--------+------------
$('.foo>.bar>.target')78379 |±6.54%|慢65%
$('.foo.bar.target');|78499 |±7.72%|慢66%
$('.target');|213488 |±0.39%|最快

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

所有操作都不同。比较它们有什么意义呢?@tamir不会被这样的微性能问题所困扰。编写足够具体的选择器以满足您的需要,并且不要太担心这种类型的东西。@Alexander不是真的。。至少不是因为他发布的HTML:PI意识到了这一点,但我只是说按id查找元素比按类名查找要快;-)