2016-11-14 7 views
0

私は現在、次のコードを使用して、jQueryのでscrolleventsのために聞いている:カスタムスクロール:ワンスクロールイベント

$(window).on('wheel', function(e) { 

    var delta = e.originalEvent.deltaY; 

    if (delta > 0) //do something 
    else //do something else 
}); 

私がいる問題は、その時にユーザーがスクロール、たくさんありますwheelイベントが発生します。

ユーザーがスクロールして最初のスクロールイベントのみを処理するたびに必要です。

I.E:最初のwheelイベントを処理してから、ユーザーがスクロールを停止するまでリスニング/処理を停止します。この時点で、私は次のスクロールを処理できるように、もう一度リスニングを開始したいと思います。

.on('wheel')ではなくmousewheel DOMMouseScrollが使用されていますが、それが役立つかどうかは十分に分かりません。

乾杯、 ジェームズ

+0

他のイベントでも同じ問題が発生します。ホイールイベントは、スクロールされた各インクリメントごとに1回発生します。スクロールホイールの動きは、1つのイベントとして扱われるのではなく、一連のイベントとして扱われます.Xピクセルの単一の動きではなく、ピクセルごとに1回スクロールされる従来のイベントに似ています。 –

+0

http://stackoverflow.com/questions/3701311/event-when-user-stops-scrolling – Mahi

答えて

1

あなたは、あなたの関数をレート制限jQuery debounceプラグインを使用することができます。次のコードは、250msごとに1回実行するようにコールバックを制限します。

$(window).scroll($.debounce(250, true, function(){ 
    console.log('Scrolling!'); 
    })); 

それは、彼らはまた、デバウンス機能を持っているようLodashまたはUnderscoreライブラリを使用することも可能です。

+0

素晴らしい作品です。 Debounceは非常に便利なプラグインのようにも見えます。ありがとう! – James

関連する問題