用JavaScript/jquery按id查找和按类查找之间是否存在效率差异?

Is there an efficiency difference between finding by id and finding by class with JavaScript/jquery?

本文关键字:查找 存在 是否 效率 之间 JavaScript jquery id      更新时间:2023-09-26

按id查找和按类查找JavaScript/jquery之间是否存在效率差异?

一个比另一个好吗?如果是这样,是因为索引的ID或类是在DOM的某个地方?

它最终不太重要吗?

通过ID查找总是更快,无论在哪里(getElementById(), $('#id'),甚至在常规CSS中)。

由于每个页面的ID都是唯一的,所以查找起来要快得多。

此外,当使用$('#id')时,jQuery会将其映射回内置的getElementById(),这是最快的查询DOM的方法。

从逻辑上讲,ID会更有效,因为它(应该)只有一个,所以一旦它找到它,它就会停止搜索。然而,我不熟悉jQuery的源代码,我不知道它实际上是如何工作的,这是从逻辑的角度来看。

对于大多数浏览器,按id搜索和按类名搜索的速度差异取决于给定类有多少元素。最好只有一个这样的元素,并且搜索速度应该是相同的。在最坏的情况下,一个给定的类有无数个元素。但是,通常情况下,您不必担心搜索包含相同类的10-20个元素的速度。

一个关键的警告,虽然:MSIE <= 8没有原生的getElementsByClassName,所以jQuery必须退回到一个完整的DOM树搜索,除非,例如,所需元素的元素名也提供了。即使是这样。如果您的文档很大并且非常喜欢div,那么$('div.myclass')可能没有多大帮助。标杆测试是唯一的方法。