【问题标题】:jQuery selector efficiencyjQuery 选择器效率
【发布时间】:2012-04-04 13:35:03
【问题描述】:

我有一个快速的 Bing 并且无法真正找到答案。

如果我有一段代码使用$('something here') 150 次,那么这样做会更有效吗:

var item = $('something here')

我知道很愚蠢的问题,但是如果 jQuery 只需要找到该项目一次会更有效吗?

【问题讨论】:

标签: jquery performance jquery-selectors memory-efficient


【解决方案1】:

根据这篇文章,将选择器分配给变量更有效,这是有道理的,因为 jQuery 不需要再次扫描 DOM 以查找匹配选择器的元素。

http://geekswithblogs.net/renso/archive/2009/07/14/jquery-selector-efficiencycost-impact.aspx

它还提供了其他提示。例如,尽量避免单独使用类选择器。有趣的是,$('#someID') 这样的选择器比 $('div#someID') 快。

【讨论】:

  • $("#someID") 映射到原生函数getElementById(),这就是它更快的原因。
【解决方案2】:

是的,存储生成的 jQuery 对象的效率要高得多,而且速度可能要快很多。每次使用选择器时,您都在启动新的搜索。 jQuery 不缓存结果。如果您将生成的 jQuery 对象存储在一个变量中,您就可以有效地消除每次重复运行搜索的需要。

【讨论】:

  • True (+1),然而,这应该用“它并不总是重要”和“运行一些性能测试”来注释。首先编写干净的代码(我发现通常 not 有重复选择器)。
  • 搜索通常可以忽略不计。真正慢下来的是每次创建大型 jQuery 对象。
  • 取决于搜索的内容——有些选择器真的很便宜,有些很贵(尤其是如果浏览器本身不能做到这一点)
【解决方案3】:

请阅读这篇文章以准确了解 jQuery 在屏幕背后的工作方式。 解释得很好。

http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-jquery-newbs-stop-jumping-in-the-pool/

【讨论】:

    猜你喜欢
    • 2011-11-07
    • 2023-03-03
    • 2011-07-03
    • 2011-06-11
    • 1970-01-01
    • 2019-06-12
    • 2012-01-20
    • 1970-01-01
    • 2011-11-25
    相关资源
    最近更新 更多