javascript - 由 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”不仅打印了一次,而且打印了很多次...
提前致谢!
解决方案
如果您使用以下方式定义侦听器
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
推荐阅读
- reactjs - Better code implementation when mapping in React.js
- angular - 使用 mat-table-exporter 时出错“TypeError:无法读取 MatTableExporterDirective.push 未定义的属性‘componentView’
- sql - 使用计算和联接时的最佳实践
- linux - 输入 bash 脚本自动输入的内容
- javascript - 如何添加/删除类到 selectize.js?
- vhdl - VHDL,将 std_logic_vector 的部分数组传递到实例化的端口映射中
- dataframe - 如何切片数据帧,找到非零数字,从第一个非零(例如 0,1,2)的零(0)到最后一个非零数字分配数字?
- regex - ForEach-Object 中的 PowerShell 正则表达式
- python - 如何在 Python 中使用 map reduce 函数来确定一个值?
- bash - 在 ffmpeg 命令中扩展变量