首页 > 解决方案 > 由 JavaScript 中的 Class 实例添加的 RemoveEventListener

问题描述

我在如何从我的 div 元素中删除事件侦听器时遇到困难(实际上已经没有想法了),每次生成新的 Class 实例时都会添加该事件侦听器。

class myClass {

myFunc () {
    const myDiv= document.querySelector('#div-1')
    myDiv.addEventListener('click', doThis, false)

   function doThis () {
   console.log('Test')
    }
   }
}

到目前为止我已经尝试过

myDiv.removeEventListener('click', doThis)

在添加一个新的 eventListener 之前,我猜这不起作用,因为它没有对相关特定实例和函数的引用。然后我尝试了

const myClicker = doThis.bind(this)

然后使用 myClicker 变量添加和删除侦听器,这也不起作用。每次我跑

new myClass()

并单击#div-1,添加了一个新的侦听器,并且“test”不仅打印了一次,而且打印了很多次...

提前致谢!

标签: javascriptclassdomevent-listenerremoveeventlistener

解决方案


如果您使用以下方式定义侦听器

myDiv.addEventListener('click', doThis, false)

删除必须包含您传递给 addListener 的所有相同参数

// Make sure to include the 'false' parameter
myDiv.removeEventListener('click', doThis,false)

来源:https ://developer.mozilla.org/pt-BR/docs/Web/API/EventTarget/removeEventListener


推荐阅读