簡體   English   中英

覆蓋jQuery事件處理程序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM