代码之家  ›  专栏  ›  技术社区  ›  Chris

我可以在jquery上声明滚动事件开始和结束的逻辑吗?

  •  1
  • Chris  · 技术社区  · 14 年前

    我想设置逻辑,当用户开始滚动页面时,滚动完成后,我如何才能完成这一点?

    我想避免以下情况,因为这意味着我的逻辑将被不必要地重复地解雇

    $(window).scroll(function(){
        console.log("scrolling");
    });
    
    1 回复  |  直到 14 年前
        1
  •  9
  •   Yi Jiang G-Man    14 年前

    你可以试着定义你是自己的 debounced events . 一个(非常粗糙的)实现看起来像这样:

    var t, l = (new Date()).getTime();
    
    $(window).scroll(function(){
        var now = (new Date()).getTime();
    
        if(now - l > 400){
            $(this).trigger('scrollStart');
            l = now;
        }
    
        clearTimeout(t);
        t = setTimeout(function(){
            $(window).trigger('scrollEnd');
        }, 300);
    });
    

    见: http://www.jsfiddle.net/yijiang/fGmbe/ 现场演示