आप के साथ setTimeout()और उपयोग कर सकते हैं :clearTimeout()jQuery.data
$(window).resize(function() {
clearTimeout($.data(this, 'resizeTimer'));
$.data(this, 'resizeTimer', setTimeout(function() {
//do something
alert("Haven't resized in 200ms!");
}, 200));
});
अपडेट करें
मैंने jQuery के डिफ़ॉल्ट (और ) -वेंट-हैंडलर को बढ़ाने के लिए एक एक्सटेंशन लिखा था । यह चयनित तत्वों के लिए एक या एक से अधिक घटनाओं के लिए एक ईवेंट हैंडलर फ़ंक्शन देता है यदि ईवेंट किसी दिए गए अंतराल के लिए ट्रिगर नहीं किया गया था। यह उपयोगी है यदि आप एक देरी के बाद ही कॉलबैक को फायर करना चाहते हैं, जैसे कि आकार बदलने की घटना, या फिर।
https://github.com/yckart/jquery.unevent.jsonbind
;(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));
इसे किसी अन्य onया bind-वेंट हैंडलर की तरह उपयोग करें , सिवाय इसके कि आप अंतिम के रूप में एक अतिरिक्त पैरामीटर पास कर सकते हैं:
$(window).on('resize', function(e) {
console.log(e.type + '-event was 200ms not triggered');
}, 200);
http://jsfiddle.net/ARTsinn/EqqHx/