将 $('body, html') 选择存储为 jQuery
Posted
技术标签:
【中文标题】将 $(\'body, html\') 选择存储为 jQuery【英文标题】:Store $('body, html') selection as jQuery将 $('body, html') 选择存储为 jQuery 【发布时间】:2015-10-12 08:17:50 【问题描述】:我正在优化 JS 代码,偶然发现了这个问题: 在脚本的各个地方都有 jQuery 选择器,它们选择“body, html”,主要是为了更改/检查一个类。现在我在想,如果我将选择存储在一个变量中会提高性能,还是相反,大元素会降低网站的性能。
【问题讨论】:
您是否确实分析了您的网站并确定这是一个问题?另外,我强烈建议不要使用像这样的全局变量(存储类然后轮询它们),不可变状态除外(就像modernizr那样)。 @BenjaminGruenbaum 我必须承认,不,我没有介绍它。出于好奇,这更像是一个普遍的问题。第二点:大多数时候我必须设置 body 的溢出值,或者滚动到某个位置 - 所以没有其他方法可以做到这一点。还是? 好的,感谢您的澄清。 怀疑除非选择器位于像scroll
这样的快速触发事件处理程序中,否则它会产生任何显着差异。
【参考方案1】:
是的,缓存选择器是 jQuery 中一种已知的优化技术,这意味着您将不得不减少一次查询。所以它无疑会更快,因为它不必每次都查询 DOM。
也就是说 - 除非您每秒查询数千次,否则仅查询 html, body
不会对性能产生任何明显影响。我会将优化时间集中在其他地方,尽管一般来说,缓存 DOM 选择以实现更简单的程序员思维模型(更少的字符串会导致拼写错误)被认为是一种很好的做法。
【讨论】:
以上是关于将 $('body, html') 选择存储为 jQuery的主要内容,如果未能解决你的问题,请参考以下文章