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

Jon*_*man 2 jquery scroll function

我需要在第一次.scrollTop()更改时运行一个函数,然后再也不会.我试了几件事,包括以下内容,但没有运气:

var view = $('#workspace');

view.bind("scroll resize", function() {
  doThisEveryScroll();
  if(view.scrollTop() == 3) {
    doThisOnFirstScroll();
  }
});
Run Code Online (Sandbox Code Playgroud)

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

  1. 这只会在用户碰巧碰到.scrollTop() == 3滚轮的情况下才会运行.
  2. .scrollTop() == 3 可能是多次真实的.

Ble*_*der 7

使用.one()设置的事件处理函数分离本身一旦它被称为:

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

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

Math.abs(100 - $(this).scrollTop()) < 20
Run Code Online (Sandbox Code Playgroud)

true如果用户在其中20px,则返回100px.