快速简单的jQuery滚动问题

Quick and easy jQuery scroll question

本文关键字:滚动 问题 jQuery 简单      更新时间:2023-09-26

我正在开发一个网站,当用户到达页面中的某些部分时,该网站会将某些类添加到主体中。因此,我必须将一个函数绑定到滚动事件。

像这样缓存scrollTop()更好吗(简短的例子,实际功能更长):

scrollcheck: function() {
    var top = main.documentquery.scrollTop();
    if(top > 60) {stuff}
    if(top > 220) {more stuff}

或者在所有情况下都只使用main.documentquery.scrollTop()

documentquery就是$(document),我记得缓存很好,但我不确定scrollTop()

是的,最好缓存它,但也最好限制对该函数的调用。这可能会对性能产生更大的影响。特别是,我将使用一种超时模式,如下所示:

(function() {
    var _timeout = null;
    function onScrollHandler() {
        if (_timeout) {
            clearTimeout(_timeout);
        }
        _timeout = setTimeout(function() {
            _timeout = null;
            realScrollcheck();
        }, 500);
    }
    $(window).scroll(onScrollHandler);
 })();

在最后一次滚动后,您的函数(此处称为realScrollcheck)将有半秒的延迟运行,但在99%的情况下,这是可以接受的。空闲时调整超时。:-)

是。最好存储该值,而不是每次都调用它。