在 jQuery 中,选择器 $('[id=foo]') 是否比 $('#foo') 效率低?
在 jQuery 中,选择器 $('[id=foo]') 是否比 $('#foo') 效率低?
In jQuery, is the selector $('[id=foo]') less efficient than $('#foo')?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
简短易懂:是!
长话短说(实际上还是很短)
<前><代码> $('[id=foo]')
使用 Sizzle(CSS 查询引擎)来选择元素,而
<前><代码> $('#foo')
直接调用
getElementById
。要讲一个很长的故事,我们开始吧:
$('[id=foo]')
是$('*:[id=foo]')
它使用通用选择器。这意味着,它会查询标记中的 ALL 节点,然后查找其中哪些节点具有id === foo
(然后希望它仅匹配一个元素,IDs = unique )。当然,这是昂贵的,非常昂贵的。这就是为什么你永远不应该编写这样的选择器!如果可能,始终完全限定此内容,例如
$('span:[id=foo]')
short and easy: YES !
long story (still short actually)
uses Sizzle (css query engine) to select the element whereas
directly calls
getElementById
.To have a really long story, here we go:
$('[id=foo]')
is a synonym for$('*:[id=foo]')
which uses the universal selector. That means, it querys ALL nodes within your markup and then looks which of those have theid === foo
(which then hopefully will only match one element, IDs = unique). That of course, is costly, pretty costly. And that is why you never ever ever ever should write a selector like this!Always fully qualify this if possible, like
$('span:[id=foo]')
是的,。
jQuery 中最快的选择器是 ID 选择器 $('#foo'),因为它直接映射到本机 JavaScript 方法 getElementById()
yeah,.
The fastest selector in jQuery is the ID selector $('#foo') because it maps directly to a native JavaScript method, getElementById()