用JavaScript/jquery按id查找和按类查找之间是否存在效率差异?
Is there an efficiency difference between finding by id and finding by class with JavaScript/jquery?
按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')
可能没有多大帮助。标杆测试是唯一的方法。
相关文章:
- 如何查找值是否存在于二叉树中
- 查找数组's按属性不存在于另一个数组中的对象
- 如何查找具有该ID的元素是否存在
- Javascript应该使用什么方法来查找或检查数组中是否存在字符串
- 查找集合中是否存在具有值的项
- 正在查找是否存在重复的名称属性
- 为什么我的代码不能用于查找 JavaScript 中的数组中是否存在值
- MongoDB 查找检查是否存在未按预期工作
- 查找对象数组(Angularjs)中是否存在值
- 从 PHP 动态上传的目录中存在的.txt文件中查找关键字
- 查找 aspx 页和相应的 ascx 用户控件中存在的所有控件和子控件 ID
- 将 li 添加到 ul 并查找是否存在
- jq查询查找单元格值,如果存在则更改单元格,如果没有,则添加新行
- 查找绑定在不存在元素上的事件
- 动态查找 jQuery 元素(如果存在)
- 是否有一个 jQuery 选择器查找不存在的子字符串
- 如何通过JavaScript查找远程服务器目录是否存在
- 查找变量中是否存在选择器
- javascript本地存储查找是否存在
- MySQL和PHP:循环遍历表,查找存在的值,如果不存在则更新,插入新值