刪除事件偵聽器

removeEventListener() 方法刪除已使用 addEventListener() 方法附加的事件處理程式:

element.removeEventListener("mousemove", myFunction);

在將元素新增到元素時,removeEventListener 中的所有內容(eventname,function 和 options)必須與一個集匹配。


.bind with removeListener

在新增事件監聽器時對函式使用 .bind 將阻止刪除該函式,實際刪除可以編寫的 eventListener:

function onEvent() {
   console.log(this.name);
}

var bindingOnEvent = onEvent.bind(this);

document.addEventListener('click', bindingOnEvent);

...

document.removeEventListener('click', bindingOnEvent);

只聽一次活動

在廣泛支援 once 選項之前,我們必須在第一次觸發事件時手動刪除偶數偵聽器。

這個小幫手將幫助我們實現這一目標:

Object.prototype.listenOnce = Object.prototype.listenOnce ||
  function listenOnce(eventName, eventHandler, options) {
      var target = this;
      target.addEventListener(eventName, function(e) {
          eventHandler(e);
          target.removeEventListener(eventName, eventHandler, options);
      }, options);
  }

var target = document.querySelector('#parent');
target.listenOnce("click", clickFunction, false);

* 將函式附加到 Object 原型不是最佳實踐,因此你可以刪除此程式碼的第一行並將其作為第一個引數新增到其中。