jQuery中find方法与直接通过ID选择元素的性能对比
哪种DOM元素获取方式更快?
毫无疑问,var id = $('#elemID'); 这种写法的速度要远远快于 $('body').find('#elemID');。
原因很简单:
- jQuery 对 ID 选择器做了专门的深度优化,当你直接使用
$('#elemID')时,它会跳过复杂的选择器解析逻辑,直接调用浏览器原生的document.getElementById()方法——这是浏览器底层实现的最快DOM查找手段,本质是通过哈希表直接定位元素,几乎没有额外开销。 - 而
$('body').find('#elemID')多了完全没必要的额外步骤:首先要定位到<body>元素,再在它的子元素范围内执行查找。哪怕find()最终也会调用getElementById(),但前面多出来的获取body的流程、链式调用的逻辑处理,都让它的速度慢了一截。
顺便提个小细节:HTML规范要求ID在整个文档中是唯一的,所以完全没必要限定在<body>里查找ID,直接全局查找才是最合理、最高效的做法。
内容的提问来源于stack exchange,提问作者Rafdro
相关产品推荐
相关产品推荐

