将 $('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的主要内容,如果未能解决你的问题,请参考以下文章

html2canvas.js插件截图空白问题

html2canvas.js插件截图空白问题

C语言排序算法——简单选择排序算法

尝试从 get() 请求返回的 html 中选择“body”标签

J-Scope

如何将 HTML 内容设置为 iframe