在第一次滚动时运行功能,然后再也不会

时间:2012-09-28 18:28:58

标签: jquery function scroll

我需要在第一次.scrollTop()更改时运行一个函数,然后再也不会。我尝试过以下几项,但没有运气:

var view = $('#workspace');

view.bind("scroll resize", function() {
  doThisEveryScroll();
  if(view.scrollTop() == 3) {
    doThisOnFirstScroll();
  }
});

出于多种原因这是错误的,但我不知道如何以任何其他方式处理这个问题。

  1. 仅当用户碰巧遇到.scrollTop() == 3时才会运行此功能。滚动轮并非如此。
  2. .scrollTop() == 3可能多次出现。

1 个答案:

答案 0 :(得分:7)

使用.one()设置一个事件处理程序,一旦调用它就会自行分离:

$('#workspace').on('scroll resize', function() {
  doThisEveryScroll();
}).one('scroll resize', function() {
  if (Math.abs(100 - $(this).scrollTop()) < 20) {
    doThisOnFirstScroll();
  }
});

您还可以通过计算目标距离来为目标滚动位置提供误差范围:

Math.abs(100 - $(this).scrollTop()) < 20

如果用户位于true的{​​{1}}范围内,则会返回20px