滚动时只触发一次

时间:2018-03-01 09:54:30

标签: javascript jquery scroll

我使用以下代码在向上或向下滚动时执行操作。

var lastScrollTop = 0;
$(window).scroll(function(event){
    var st = $(this).scrollTop();
    if (st > lastScrollTop){
       // downscroll code
    } else {
      // upscroll code
      console.log("up");
    }
    lastScrollTop = st;
});

但是,我只想触发一次。 知道为什么以下版本不起作用?

谢谢!

var lastScrollTop = 0;
$(window).one('scroll',function(){
    var st = $(this).scrollTop();
    if (st > lastScrollTop){
       // downscroll code
    } else {
      // upscroll code
      console.log("up");
    }
    lastScrollTop = st;
});

1 个答案:

答案 0 :(得分:0)

如果你想检查你的处理程序是否已被调用 - 你应该定义一个标志(在这种情况下为hasCalled):

var lastScrollTop = 0;
$(window).scroll(function(event){

  var st = $(this).scrollTop();
  if(st <= lastScrollTop) {
    console.log("up");
    $(window).off('scroll');
  }
  lastScrollTop = st;

});