我正在开发一个网站,当用户到达页面中的某些部分时,会向主体添加某些类,等等。因此,我必须将一个函数绑定到滚动事件。
最好像这样缓存scrollTop()
(简短示例,实际函数更长):
scrollcheck: function() {
var top = main.documentquery.scrollTop();
if(top > 60) {stuff}
if(top > 220) {more stuff}
或者只在所有情况下使用main.documentquery.scrollTop()
?
(documentquery
是$(document)
,我记得缓存好,但我不确定scrollTop()
)
答案 0 :(得分:1)
是的,最好缓存它,但最好还是限制对这个函数的调用。这可能会对性能产生更大的影响。特别是,我会沿着以下几行使用超时模式:
(function() {
var _timeout = null;
function onScrollHandler() {
if (_timeout) {
clearTimeout(_timeout);
}
_timeout = setTimeout(function() {
_timeout = null;
realScrollcheck();
}, 500);
}
$(window).scroll(onScrollHandler);
})();
在您的函数的最后一次滚动(此处称为realScrollcheck
)运行后会有半秒延迟,但在99%的情况下可以接受。在闲暇时调整超时。 : - )
答案 1 :(得分:0)
是。最好存储值而不是每次都调用它。