几天前我扩展了默认的 jQuery on
-event-handler。如果在给定的时间间隔内未触发事件,它会将一个或多个事件的事件处理函数附加到所选元素。如果您只想在延迟后触发回调,这很有用,例如调整大小事件,或者其他。
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));
像任何其他on
或bind
-event 处理程序一样使用它,除了你可以传递一个额外的参数作为最后一个:
$(window).on('resize', function(e) {
console.log(e.type + '-event was 200ms not triggered');
}, 200);
http://jsfiddle.net/ARTsinn/EqqHx/