2

初めて.scrollTop()変更したときに関数を実行する必要があり、その後は二度と実行しません。以下を含むいくつかのことを試しましたが、うまくいきませんでした:

var view = $('#workspace');

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

これは多くの理由で間違っていますが、他の方法でこれにアプローチする方法がわかりません。

  1. これは、ユーザーがたまたまヒットした場合にのみ実行されますが、.scrollTop() == 3これはスクロール ホイールでは必ずしもそうではありません。
  2. .scrollTop() == 3複数回真になる可能性があります。
4

1 に答える 1

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これは、ユーザーが の範囲内20pxにいる場合に返されます100px

于 2012-09-28T18:30:35.020 に答える