以下等式在执行时间方面是否正确?
Is $('#id') > $('div#id')
我尝试使用console.time()来测量时间并且结果不一致。
答案 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
只会查找div
个id
元素,忽略其他元素。因此,如果您有<span id="id">...</span>
,则无法找到它,因为虽然它有id
,但它不是div
。 div#id
在使用多个div
且id
的无效HTML文档中使用时,也会返回多个元素(尽管由于文档无效,我不会依赖它;相反,我通过使id
唯一并使用其他东西来分组这些元素(如类)来使文档有效。