如果我们在使用jquery访问DOM元素时使用tag#id而不是#id,那么会有相当大的性能提升

时间:2015-08-04 12:48:31

标签: jquery performance

以下等式在执行时间方面是否正确?

 Is   $('#id') > $('div#id')

我尝试使用console.time()来测量时间并且结果不一致。

1 个答案:

答案 0 :(得分:4)

  

如果我们在使用jquery

访问DOM元素时使用标记#id而不是#id,那么会有相当大的性能提升吗?

如果“表现提升”意味着“更好(更快)的表现”,那么不,恰恰相反,而不是它可能很重要。

  

以下等式在执行时间方面是否正确?

Is   $('#id') > $('div#id')

不,原始ID选择器针对getElementById的调用进行了优化,显着的速度比querySelectorAll快(或者更糟糕的情况是,Sizzle自己处理如果它使用复合标记和ID选择器调用时找不到querySelectorAll

差异不太可能重要,除非你在紧密循环中做了数百万次,这似乎不太可能。

另请注意,两个选择器不相同:

#id查找具有该id的任何元素,无论其标记如何,并且只返回一个,即使在多次使用id的无效HTML文档中也是如此。 (具体来说,the first one,但由于id重复时文档无效,我不会依赖它,尤其是因为previous specification表示行为未定义。)< / p>

div#id只会查找divid元素,忽略其他元素。因此,如果您有<span id="id">...</span>,则无法找到它,因为虽然它有id,但它不是divdiv#id在使用多个divid的无效HTML文档中使用时,也会返回多个元素(尽管由于文档无效,我不会依赖它;相反,我通过使id唯一并使用其他东西来分组这些元素(如类)来使文档有效。