2016-11-14 73 views
0

我正在收聽的jQuery的scrollevents,使用下面的代碼:自定義滾動JS中和jQuery的:一個滾動事件

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

    var delta = e.originalEvent.deltaY; 

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

我遇到的問題是,當用戶滾動,大量的wheel事件被解僱。

我希望每次用戶滾動到只處理第一個滾動事件。

I.E .:我只想處理第一個wheel事件,然後停止監聽/處理它們,直到用戶停止滾動爲止。此時我想再次開始收聽,以便處理下一次滾動。

我看過mousewheel DOMMouseScroll而不是.on('wheel'),但對差異知之甚少,不知道是否有幫助。

乾杯, 詹姆斯

+0

那些其他事件會有相同的問題 - 滾動事件觸發每個增量滾動一次。滾輪運動不被視爲單個事件,而是作爲其中的一系列事件 - 類似於傳統滾動事件每像素移動一次的方式,而不是X像素的單個移動。 –

+0

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

回答

1

可以使用jQuery debounce插件進行速率限制你的函數。以下代碼將回調限制爲每250毫秒執行一次。

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

它也可以使用LodashUnderscore庫,他們也有防抖動功能。

+0

奇妙地工作。 Debounce看起來也是一個非常有用的插件。謝謝! – James