簡體   English   中英

我可以暫時覆蓋事件監聽器嗎?

[英]Can I override an event listener temporarily?

我想為整個文檔添加一個事件監聽器,如果程序在函數內部,則添加另一個。

例如。

$(document).click(function(){
    foo();
    //etc.
});


function f1(){
   $(document).click(function(){
      bar();
      //etc.
   });

   //etc.
};

並且在運行時:

 click -> foo(); 
 click -> foo();
  ...
 f1();
 click -> bar();
 click -> bar();

假設可以從document刪除所有click事件處理程序,則可以在附加新事件之前使用.off()

$(document).click(foo);

function f1(){
   $(document).off('click').click(bar);
};

JSFiddle

有點晚了,但是這里有一些代碼可以滿足您的需求: JSfiddle

HTML:

<button id="f1" style="display:none;">Button for f1</button>

JS:

function f1() {
    $(document).off('click').on('click', foo);
}

var foo = function () {
    $('button').show().click(f2);
};

function f2(e) {
    e.stopPropagation();
    $(document).off('click', foo).on('click', bar);
}

var bar = function () {
    $('button').hide();
    f1();
};

f1();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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