簡體   English   中英

我是否需要使用JQuery刪除和替換事件處理程序以交換它們?

[英]Do I need to remove and replace event handlers with JQuery to swap them?

  1. 我希望事件clicktouchstart觸發功能。

當然,使用JQuery很簡單。 $('#id').on('click touchstart', function{...});

  1. 但是一旦觸發了該事件,當事件觸發后,我希望同一個處理程序執行其他操作,

  2. 然后,我想回到原始的處理功能。

與使用$('#id').off('click touchstart');相比,似乎必須有一種更清潔的方法$('#id').off('click touchstart'); 然后重新應用處理程序。

我應該怎么做?

我這樣做的方式是通過為處理程序函數創建幾個函數來基於某些標志進行調用。 Sudo代碼將如下所示:

function beginning_action() {
...
}

function middle() {
...
}

var beginning_state = true;    

$('#id').on('click touchstart', function{
  if(beginning_state) {
    beginning_action();
  } else {
    middle();
  }
});

然后,您所需要做的就是更改變量beginning_state以更改調用哪個函數。 當然,您可以給他們更好的名字來描述他們的工作,而不是描述他們的工作時間。

另外,如果您希望處理程序調用兩個以上的函數,則可以將beginning_state變量從布爾值更改為int並檢查其值以確定要調用的函數。

祝好運!

您可以在JavaScript代碼的某些構造中創建一個計數器變量,該變量可讓您決定如何處理事件。

  $(function() { var trackClicks = (function() { var clicks = true; var getClicks = function() { return clicks; }; var eventClick = function() { clicks = !clicks; }; return { getClicks: getClicks, eventClicks: eventClicks } })(); $('#id').on('click touchstart', function { if (trackClicks.getClicks()) { handler1(); } else { handler2(); } trackClicks.eventClick(); }); function handler1() { //firsthandler}; function handler2() { //secondhandler}; }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 

暫無
暫無

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

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