Anda dapat menggunakan setTimeout()dan clearTimeout()berhubungan dengan jQuery.data:
$(window).resize(function() {
clearTimeout($.data(this, 'resizeTimer'));
$.data(this, 'resizeTimer', setTimeout(function() {
//do something
alert("Haven't resized in 200ms!");
}, 200));
});
Memperbarui
Saya menulis ekstensi untuk meningkatkan default on(& bind) -event-handler jQuery . Ini melampirkan fungsi pengendali kejadian untuk satu atau lebih kejadian ke elemen yang dipilih jika kejadian itu tidak dipicu untuk interval tertentu. Ini berguna jika Anda ingin mengaktifkan callback hanya setelah penundaan, seperti peristiwa pengubahan ukuran, atau lainnya.
https://github.com/yckart/jquery.unevent.js
;(function ($) {
var methods = { on: $.fn.on, bind: $.fn.bind };
$.each(methods, function(k){
$.fn[k] = function () {
var args = [].slice.call(arguments),
delay = args.pop(),
fn = args.pop(),
timer;
args.push(function () {
var self = this,
arg = arguments;
clearTimeout(timer);
timer = setTimeout(function(){
fn.apply(self, [].slice.call(arg));
}, delay);
});
return methods[k].apply(this, isNaN(delay) ? arguments : args);
};
});
}(jQuery));
Gunakan seperti yang lainnya onatau bind-event handler, kecuali Anda bisa meneruskan parameter ekstra sebagai yang terakhir:
$(window).on('resize', function(e) {
console.log(e.type + '-event was 200ms not triggered');
}, 200);
http://jsfiddle.net/ARTsinn/EqqHx/