将$(';正文,html';)选择存储为jQuery
我正在优化JS代码,遇到了这个问题:将$(';正文,html';)选择存储为jQuery,jquery,performance,variables,jquery-selectors,Jquery,Performance,Variables,Jquery Selectors,我正在优化JS代码,遇到了这个问题: 在脚本的不同位置有jQuery选择器,它们选择“body,html”,主要用于更改/检查类。现在我在想,如果我将选择存储在一个变量中,它是否会提高性能,或者相反,大型元素会降低站点的性能。是的,缓存选择器是jQuery中一种已知的优化技术,这意味着您只需少查询一次。因此,它无疑会更快,因为它不必每次都查询DOM 这就是说,除非每秒查询数千次,否则仅查询html,body不会对性能产生任何明显的影响。我将把优化时间集中在其他地方,尽管通常认为最好的做法是缓存D
在脚本的不同位置有jQuery选择器,它们选择“body,html”,主要用于更改/检查类。现在我在想,如果我将选择存储在一个变量中,它是否会提高性能,或者相反,大型元素会降低站点的性能。是的,缓存选择器是jQuery中一种已知的优化技术,这意味着您只需少查询一次。因此,它无疑会更快,因为它不必每次都查询DOM
这就是说,除非每秒查询数千次,否则仅查询
html,body
不会对性能产生任何明显的影响。我将把优化时间集中在其他地方,尽管通常认为最好的做法是缓存DOM选择以获得更简单的程序员心智模型(更少的字符串以获得输入错误)。您是否确实分析了您的站点并确定这是一个问题?此外,我强烈建议不要使用这样的全局变量(存储类,然后轮询它们),除非使用不可变状态(就像Modernizer那样)。@BenjaminGruenbaum我必须承认,不,我没有分析它。这更像是出于好奇而提出的一般性问题。关于你的第二点:大多数时候我必须设置body的溢出值,或者滚动到某个位置,所以没有其他方法可以做到。或者?好的,谢谢你的澄清。除非选择器位于像scroll