[英]Overriding jQuery event handlers
我試圖覆蓋jQuery事件處理程序的默認行為。 但是似乎找不到有關如何執行此操作的任何文檔。
假設我要將點擊處理程序綁定到這樣的元素:
$('div#mydiv').on('click', funcName);
我要完成的工作是覆蓋.on
函數,以便我可以修改jQuery綁定任何事件的方式
我已經嘗試重寫$.fn.on
,這顯然導致了永不$.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');
});
});
掛接到事件綁定過程的正確方法是什么? 還值得一提:我真的只想更改.on
工作方式,將其包裝到其他函數中對我的情況不起作用。
您需要像這樣cache
原始函數引用
var originalOn = jQuery.fn.on;
jQuery.fn.on = function() {
console.log(arguments[ 0 ] + ' will be bound');
originalOn.apply( this, arguments );
};
在這里,我們存儲對jQuery原始.on
函數的引用。 然后,我們覆蓋處理程序,但使用Function.prototype.apply
使用相同的上下文 + 參數調用原始函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.