2010-08-18 75 views

回答

1

在jQuery 1.4中,检查选择器是否是id选择器(如#p1)。

  • 如果确实如此,调用document.getElementId(...)并将结果包装在jQuery实用程序对象中并返回。
  • 如果除此之外的任何东西,jQuery调用Sizzle,然后它会执行任何操作来查找元素。而从源头来看,这是非常不平凡的东西。
1

,最好的办法是测试!

从这个简单的测试:

  • 内容 - ​<p id="p1"><span>Test</span></p>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​
  • 循环100,000次
  • 版本:jQuery的1.4.2

  • $('#p1').find('span');:2601ms

  • $('#p1 span');:1998ms

看起来,在这种情况下单个选择器更快,因为你没有通过jQuery进行多次调用,这是有道理的。

Give it a try here, look at your console


在CAE你介绍jQuery 1.3.2这里的那些结果:

  • $('#p1').find('span');:3225ms
  • $('#p1 span');:2082ms

Try it out with 1.3.2 here

+0

+1为jsFiddle – Homer 2010-08-26 19:50:08

0

就你而言,#1可能比#2更快,但取决于有多少迭代以及要搜索多少个元素,#2在其他情况下可能比#1更快。

例如:我猜如果你在#p1中有3 span元素而没有其他元素,那么#1会比#2更快,因为find并没有试图做尽可能多的CSS匹配。但是,如果您有1000 span元素以及#p1中的2000个其他元素,我会下注#2会更快,因为它不必遍历每个元素两次。