jQuery如何解綁註冊的事件處理函式

antzone發表於2017-03-02

在jQuery中使用on()註冊事件處理函式非常的方便,例如:

[JavaScript] 純文字檢視 複製程式碼
$("#bt").on("click",func);

以上程式碼註冊了一個click事件處理函式。既然有註冊事件處理函式的時候,那麼也有解綁註冊的時候。

程式碼如下:

[JavaScript] 純文字檢視 複製程式碼
$("bt").off("click");

以上程式碼可以順利解綁註冊的事件處理函式。但是這種方式是有缺陷的,因為有時候我們不止註冊一個事件處理函式,例如:

[JavaScript] 純文字檢視 複製程式碼
$("#bt").on("click",func); 
$("#bt").on("click",anotherFunc);

以上程式碼為指定元素註冊了兩個事件處理函式,但是我們只想解綁其中的一個,程式碼如下:

[JavaScript] 純文字檢視 複製程式碼
$("#bt").off("click",func);

以上程式碼可以解綁指定的事件處理函式。但是還存在一個問題,那就是註冊的事件處理函式可能是匿名的,例如:

[JavaScript] 純文字檢視 複製程式碼
$("#bt").on("click",function(){
  //code
});

如何對它進行精確的解繫結呢。想要實現精確解繫結,那就要在註冊的時候做一番工作,程式碼如下:

[JavaScript] 純文字檢視 複製程式碼
$("#bt").on("click.myNamespace",function(){
  //code
});

相關文章