$(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 onveya bindolay 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 resizeyerine kullanıyor scroll, ama kimin umurunda ?!)