快速简单的jQuery滚动问题

时间:2011-06-05 18:19:12

标签: javascript jquery scroll

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

最好像这样缓存scrollTop()(简短示例,实际函数更长):

scrollcheck: function() {

    var top = main.documentquery.scrollTop();

    if(top > 60) {stuff}
    if(top > 220) {more stuff}

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

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

2 个答案:

答案 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)

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