72 lines
2.1 KiB
JavaScript
72 lines
2.1 KiB
JavaScript
/* http://james.padolsey.com/javascript/special-scroll-events-for-jquery/ */
|
|
|
|
(function(){
|
|
|
|
var special = jQuery.event.special,
|
|
uid1 = "D" + (+new Date()),
|
|
uid2 = "D" + (+new Date() + 1);
|
|
|
|
special.scrollstart = {
|
|
setup: function() {
|
|
|
|
var timer,
|
|
handler = function(evt) {
|
|
|
|
var _self = this,
|
|
_args = arguments;
|
|
|
|
if (timer) {
|
|
clearTimeout(timer);
|
|
} else {
|
|
evt.type = "scrollstart";
|
|
jQuery.event.dispatch.apply(_self, _args);
|
|
}
|
|
|
|
timer = setTimeout( function(){
|
|
timer = null;
|
|
}, special.scrollstop.latency);
|
|
|
|
};
|
|
|
|
jQuery(this).bind("scroll", handler).data(uid1, handler);
|
|
|
|
},
|
|
teardown: function(){
|
|
jQuery(this).unbind( "scroll", jQuery(this).data(uid1) );
|
|
}
|
|
};
|
|
|
|
special.scrollstop = {
|
|
latency: 300,
|
|
setup: function() {
|
|
|
|
var timer,
|
|
handler = function(evt) {
|
|
|
|
var _self = this,
|
|
_args = arguments;
|
|
|
|
if (timer) {
|
|
clearTimeout(timer);
|
|
}
|
|
|
|
timer = setTimeout( function(){
|
|
|
|
timer = null;
|
|
evt.type = "scrollstop";
|
|
jQuery.event.dispatch.apply(_self, _args);
|
|
|
|
|
|
}, special.scrollstop.latency);
|
|
|
|
};
|
|
|
|
jQuery(this).bind("scroll", handler).data(uid2, handler);
|
|
|
|
},
|
|
teardown: function() {
|
|
jQuery(this).unbind( "scroll", jQuery(this).data(uid2) );
|
|
}
|
|
};
|
|
|
|
})(); |