jQuery 选择器性能
为什么 jQuery 中 id 选择器比类选择器更快?
Why is id selector faster than class selector in jQuery?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
为什么 jQuery 中 id 选择器比类选择器更快?
Why is id selector faster than class selector in jQuery?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
jQuery 中最快的选择器是 ID 选择器 ($('#someid'))。这是因为它直接映射到本机 JavaScript 方法 getElementById()。
The fastest selector in jQuery is the ID selector ($('#someid')). This is because it maps directly to a native JavaScript method, getElementById().
关于Id Selector的这些要点也可能对您有所帮助。
第 1 点:
在按 Id 搜索时,不要限定您的选择器。
BAD Way
BEST Way
第 2 点:
您应该始终缓存您的选择到某个变量
坏方法
最好方式
These points about Id Selector may also help You.
Point 1 :
Don't Qualify your selector when searching by Id.
BAD Way
BEST Way
Point 2 :
You should Always Cache your Selections to some variable
BAD Way
BEST Way
浏览器能够通过 Id 比使用类更快地检索元素。给定一个 Id,使用
getElementById
时将返回一个或零个元素。这使得浏览器可以跟踪页面中元素的 Id,从而通过 Id 提供快速搜索操作。按类名搜索需要查找具有给定类名的所有元素。尽管某些浏览器支持 getElementsByClassName,但在内部它们需要遍历整个 DOM 树来获取它们。
jQuery 选择器充当这些本机函数的包装器,与其他函数一起使用,例如 getElementsByTagName、querySelector 或 querySelectorAll(它还附带一个选择器)名为
Sizzle
的库,如果浏览器缺少必要的本机功能,则使用该库)。如果多个元素具有此 ID,则不会定义行为。
因为它们引用了具有特定 ID 的 DOM 元素。此外,还应该有
Browsers are able to retrieve elements by Id faster than using a class. Given an Id, one or zero elements are returned when using
getElementById
. This makes it possible for browsers to keep track of the Ids of the elements in a page, providing fast search operations by Id.Searching by class name makes it necessary to look for all the elements with that given class name. Even though some browsers support
getElementsByClassName
, internally they need to traverse the whole DOM tree to fetch them.jQuery selector acts as a wrapper around these native functions, together with other such as
getElementsByTagName
,querySelector
orquerySelectorAll
(and it also comes with a selector library calledSizzle
, that is used if the browser lacks the necessary native function).Behavior is not defined if more than one element has this ID.
because ther references to the DOM elements with a certain ID. In addition, there shouldn