我寫了一個函數來調用默認jQuery.fn.on
-handler,觸發事件的指定次數後,。現在我卡住了,因爲原來event
不會傳遞給函數,任何想法如何改進呢?通行證jQuery的事件拖欠,事件處理
;(function ($) {
var oldOn = $.fn.on,
i = 0;
$.fn.on = function() {
var args = arguments,
j = args.length;
for (var last in args);
while (j--) {
if ($.isFunction(args[j]) && !isNaN(args[last])) {
var oldFn = args[j],
after = args[last];
args[j] = function() {
i++;
if (i === after) {
oldFn.call();
i = 0;
}
};
}
}
if (!isNaN(args[last])) delete args[last];
return oldOn.apply(this, arguments);
};
})(jQuery);
// call the plugin and fire the `fn` after each 20 mousemoves
$(document).on('mousemove', function (e) {
console.log(e); // undefined
}, 20);
正如你所看到的,不會有任何問題了以下工作:
var oldOn = $.fn.on;
$.fn.on = function() {
return oldOn.apply(this, arguments);
};
$(document).on('click', function(e){
console.log(e) // jQuery.Event
});
哪裏的錯誤,我怎麼能得到這個工作?
更新
我現在知道了更簡單:https://github.com/yckart/jquery.unevent.js
你能指望此行'爲(VAR最後在args);'怎麼辦? – Hogan 2013-02-08 12:54:17
@Hogan在我看來,這是擺脫參數的最後一個項目的最簡單方法。 – yckart 2013-02-08 12:55:20
也就是說,這將是不錯的:)問題 – Hogan 2013-02-08 12:55:38