gpt4 book ai didi

javascript - 覆盖 jQuery 事件处理程序

转载 作者:行者123 更新时间:2023-11-29 17:14:43 26 4
gpt4 key购买 nike

我正在尝试覆盖 jQuery 事件处理程序的默认行为。但似乎无法找到有关如何执行此操作的任何文档。

假设我将点击处理程序绑定(bind)到这样的元素:

$('div#mydiv').on('click', funcName);

我想要完成的是覆盖 .on 函数,这样我就可以修改 jQuery 绑定(bind)任何事件的方式

我已经尝试覆盖 $.fn.on 并且这显然导致了永无止境的循环:

$.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');
});
});

挂接到事件绑定(bind)过程的正确方法是什么?另外值得一提的是:我真的只是想改变 .on 的工作方式,将它包装到一个不同的函数中对我的情况不起作用。

最佳答案

你需要像这样缓存原始函数引用

var originalOn = jQuery.fn.on;

jQuery.fn.on = function() {
console.log(arguments[ 0 ] + ' will be bound');

originalOn.apply( this, arguments );
};

在这里,我们存储对 jQuery 原始 .on 函数的引用。然后我们覆盖处理程序,但我们使用相同的 context + arguments 使用 Function.prototype.apply 调用原始函数。

关于javascript - 覆盖 jQuery 事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18914637/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com