JS removeEventListener()和detachEvent()方法:銷毀事件

2020-07-16 10:05:12
在 JavaScript 中的 DOM 事件模型中,使用 removeEventListener() 方法可以從指定物件中刪除已經註冊的事件處理常式。用法如下:

element.removeEventListener(String type, Function listener, boolean useCaptrue);

引數說明如下:
  • type:註冊事件的型別名。事件型別與事件屬性不同,事件型別名沒有 on 字首。例如,對於事件屬性 onclick 來說,所對應的事件型別為 click。
  • listener:監聽函數,即事件處理常式。在指定型別的事件發生時將呼叫該函數。在呼叫這個函數時,預設傳遞給它的唯一引數是 event 物件。
  • useCaptrue:是一個布林值。如果為 true,則指定的事件處理常式將在事件傳播的捕獲階段觸發;如果為 false,則事件處理常式將在冒泡階段觸發。

範例1

在下面範例中,分別為按鈕 a 和按鈕 b 註冊 click 事件,其中按鈕 a 的事件函數為 ok(),按鈕 b 的事件函數為 delete_event()。在瀏覽器中預覽,當單擊“點我”按鈕將彈出一個對話方塊,在不刪除之前這個事件時一直存在的。當單擊“刪除事件”按鈕之後,“點我”按鈕將失去任何效果。
<input id="a" type="button" value="點我" />
<input id="b" type="button" value="刪除事件" />
<script>
    var a = document.getElementById("a");  //獲取按鈕a
    var b = document.getElementById("b");  //獲取按鈕b
    function ok(){       //按鈕a的事件處理常式
         alert("您好,歡迎光臨!");
    }
    function delete_event(){     //按鈕b的事件處理常式
         a.removeEventListener("click",ok,false); //移出按鈕a的click事件
    }
    a.addEventListener("click",ok,false);   //預設為按鈕a註冊事件
    b.addEventListener("click",delete_event,false); //預設為按鈕b註冊事件
</script>
演示效果如下圖所示: