2013-11-22 179 views
1

我正在構建一個自定義jQuery代碼,以允許用戶通過使用鼠標滾輪瀏覽網頁。防反跳鼠標滾輪

我建立的代碼是simulair此頁:Link

一切工作正常,但鼠標滾輪事件默認觸發多次,使腳本「跳過」完整的div和/上多次向下滾動,而不只是一次。

我需要一種方法來限制鼠標輪只能觸發一次。在我尋找答案的過程中,我發現Ben Alman的腳本使用「debounce」。

我的問題在這裏;有沒有辦法消除每一個鼠標滾輪事件而不是去除它的功能?所以基本上每隔500毫秒就會發出一次「鼠標滾輪」發射一次,並忽略500毫秒發射的所有火情。

+0

使用超時去抖它 –

回答

3

如何使用setTimeout來控制事件的觸發 - 如:

$("div").html((new Array(1000)).join(" test")).on("mousewheel DOMMouseScroll MozMousePixelScroll", function() 
{ 
    if (!$(this).data('flag')) 
    { 
     var self = this; 
     $(this).data('timeout', window.setTimeout(function() 
     { 
      $(self).data('flag', false); 
     }, 500)); 

     $(this).data('flag', true); 

     console.log('here'); 
    } 
}); 

小提琴:http://jsfiddle.net/aN4hU/

+0

的功能正是我要找的,看看行不行馬上出去。謝謝! – Jefferson

+0

工作就像一個魅力!非常感謝! – Jefferson

+0

不知道這是否有什麼區別,但是如果你需要你的腳本像在那個網站上那樣運行,我會使用'animate'函數並且基於這個邏輯 - 因爲當動畫需要滾動時已經完成(並且沒有經過500ms的時間 - 考慮到不同的屏幕分辨率,動畫持續時間將花費不同的時間完成)。 – eithed