$(window).scroll(function() {
clearTimeout($.data(this, 'scrollTimer'));
$.data(this, 'scrollTimer', setTimeout(function() {
// do something
console.log("Haven't scrolled in 250ms!");
}, 250));
});
อัปเดต
ฉันเขียนส่วนขยายเพื่อปรับปรุงค่าเริ่มต้นของ jQueryon
-event-handlerมันแนบฟังก์ชันตัวจัดการเหตุการณ์สำหรับเหตุการณ์อย่างน้อยหนึ่งเหตุการณ์เข้ากับองค์ประกอบที่เลือกและเรียกใช้ฟังก์ชันตัวจัดการหากเหตุการณ์ไม่ได้ถูกทริกเกอร์สำหรับช่วงเวลาที่กำหนด สิ่งนี้มีประโยชน์หากคุณต้องการเริ่มการเรียกกลับหลังจากเกิดความล่าช้าเท่านั้นเช่นเหตุการณ์ปรับขนาดหรืออื่น ๆ
สิ่งสำคัญคือต้องตรวจสอบ github-repo สำหรับการอัปเดต!
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));
ใช้มันเหมือนกับตัวจัดการอื่น ๆon
หรือbind
-event ยกเว้นว่าคุณสามารถส่งผ่านพารามิเตอร์พิเศษเป็นตัวสุดท้าย:
$(window).on('scroll', function(e) {
console.log(e.type + '-event was 250ms not triggered');
}, 250);
http://yckart.github.com/jquery.unevent.js/
(การสาธิตนี้ใช้resize
แทนscroll
แต่ใครจะสนล่ะ!)