在 jQuery 中,选择器 $('[id=foo]') 是否比 $('#foo') 效率低?

发布于 2024-09-15 07:30:09 字数 88 浏览 3 评论 0原文

在 jQuery 中,选择器 $('[id=foo]') 是否比 $('#foo') 效率低?

In jQuery, is the selector $('[id=foo]') less efficient than $('#foo')?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

苍白女子 2024-09-22 07:30:10
  • 简短易懂:

  • 长话短说(实际上还是很短)

    <前><代码> $('[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)

     $('[id=foo]')
    

    uses Sizzle (css query engine) to select the element whereas

     $('#foo') 
    

    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 the id === 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]')

囚你心 2024-09-22 07:30:10

是的,。

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()

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文