$(window).scroll(function() {
clearTimeout($.data(this, 'scrollTimer'));
$.data(this, 'scrollTimer', setTimeout(function() {
// do something
console.log("Haven't scrolled in 250ms!");
}, 250));
});
Güncelleme
JQuery'nin varsayılan olay işleyicisini geliştirmek için bir uzantı yazdım on
. Seçilen öğelere bir veya daha fazla olay için bir olay işleyici işlevi ekler ve olay belirli bir aralık için tetiklenmemişse işleyici işlevini çağırır. Bu, bir geri aramayı yalnızca yeniden boyutlandırma olayı veya benzeri bir gecikmeden sonra tetiklemek istiyorsanız kullanışlıdır.
Güncellemeler için github deposunu kontrol etmek önemlidir!
https://github.com/yckart/jquery.unevent.js
;(function ($) {
var on = $.fn.on, timer;
$.fn.on = function () {
var args = Array.apply(null, arguments);
var last = args[args.length - 1];
if (isNaN(last) || (last === 1 && args.pop())) return on.apply(this, args);
var delay = args.pop();
var fn = args.pop();
args.push(function () {
var self = this, params = arguments;
clearTimeout(timer);
timer = setTimeout(function () {
fn.apply(self, params);
}, delay);
});
return on.apply(this, args);
};
}(this.jQuery || this.Zepto));
Son olarak fazladan bir parametre iletebilmeniz dışında, diğer herhangi bir on
veya bind
olay işleyicisi gibi kullanın :
$(window).on('scroll', function(e) {
console.log(e.type + '-event was 250ms not triggered');
}, 250);
http://yckart.github.com/jquery.unevent.js/
(bu demo resize
yerine kullanıyor scroll
, ama kimin umurunda ?!)