diff --git a/README.markdown b/README.markdown index 66086b43a..470e53c10 100644 --- a/README.markdown +++ b/README.markdown @@ -20,6 +20,16 @@ $('#my_elem').mousewheel(function(event, delta, deltaX, deltaY) { console.log(delta, deltaX, deltaY); }); ``` +## Limit frequency + +You must use .mouseweel() method instead of .on() method to add the delay parameter. It will limit the frequency of triggered events. + +```js + // Exemple : 250 milliseconds = 4 times / second + $('selector').mousewheel(function(event, delta, deltaX, deltaY) { + console.log(delta, deltaX, deltaY); + }, 250); +``` ## See it in action [See the tests on Github](http://brandonaaron.github.com/jquery-mousewheel/test). diff --git a/jquery.mousewheel.js b/jquery.mousewheel.js index 9d65c7162..da397970a 100755 --- a/jquery.mousewheel.js +++ b/jquery.mousewheel.js @@ -23,6 +23,9 @@ } }(function ($) { + var _timeout = 0; + var _isPaused = false; + var toFix = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll']; var toBind = 'onwheel' in document || document.documentMode >= 9 ? ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll']; var lowestDelta, lowestDeltaXY; @@ -56,7 +59,8 @@ }; $.fn.extend({ - mousewheel: function(fn) { + mousewheel: function(fn, time) { + _timeout = time; return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel"); }, @@ -67,6 +71,14 @@ function handler(event) { + + if(_isPaused){ return; } + + if(_timeout > 0){ + _isPaused = true; + setTimeout(function(){ _isPaused = false; }, _timeout); + } + var orgEvent = event || window.event, args = [].slice.call(arguments, 1), delta = 0,