Javascript 重写jQuery事件处理程序
我试图覆盖jQuery事件处理程序的默认行为。但似乎找不到任何关于如何做到这一点的文档 假设我将单击处理程序绑定到如下元素:Javascript 重写jQuery事件处理程序,javascript,jquery,events,Javascript,Jquery,Events,我试图覆盖jQuery事件处理程序的默认行为。但似乎找不到任何关于如何做到这一点的文档 假设我将单击处理程序绑定到如下元素: $('div#mydiv').on('click', funcName); 我试图完成的是覆盖函数上的,这样我就可以修改jQuery绑定任何事件的方式 我已经尝试在上覆盖$.fn.,这显然导致了一个never-ender循环: $.fn.on = function(eventname, callback){ console.log(eventname + ' wil
$('div#mydiv').on('click', funcName);
我试图完成的是覆盖函数上的,这样我就可以修改jQuery绑定任何事件的方式
我已经尝试在
上覆盖$.fn.,这显然导致了一个never-ender循环:
$.fn.on = function(eventname, callback){
console.log(eventname + ' will be bound');
$(this).on(eventname, callback);
};
$(function(){
$('#element').on('click', function(){
console.log('Did execute click');
});
});
挂接事件绑定过程的正确方法是什么?同样值得一提的是:我真的只想改变的工作方式。在
上,将其包装到不同的函数中对我的情况不起作用。您需要像这样缓存原始函数引用
var originalOn = jQuery.fn.on;
jQuery.fn.on = function() {
console.log(arguments[ 0 ] + ' will be bound');
originalOn.apply( this, arguments );
};
在这里,我们将对jQuerys original的引用存储在
函数中。然后覆盖处理程序,但使用function.prototype.apply
使用相同的上下文+参数调用原始函数,我建议将其包装为(function(){…})()代码>阻塞只是为了确保originalOn
不会被意外覆盖。@t.niese通常我会同意,但我只是想澄清这一点,并展示如何正确调用存储函数引用。我让OP来正确处理他的应用程序上下文。当然,我只想提一下。它应该被看作是答案的补充,而不是影响答案质量的东西。(我应该清楚这一点)哇,简单又漂亮。喜欢它。谢谢