javascript - 如何添加和删除作为箭头函数的事件侦听器
问题描述
我正在尝试使用箭头函数添加和删除事件侦听器。我可以添加但不能删除它们。我已阅读文档,似乎没有任何使用箭头函数的示例。箭头函数不能与 removeEventListener 一起使用是否有原因?如果事件侦听器尚不存在,有没有办法只添加它?最终,这就是我想要做的。
let bluebox = document.querySelector('.bluebox');
let redbox = document.querySelector('.redbox');
const clickMe = ()=>{
alert("click added");
};
bluebox.addEventListener('click', ()=>clickMe());
bluebox.removeEventListener('click',()=>clickMe());
.boxes{
width:calc(25% - 4px);
height:50vh;
margin:2px;
}
.redbox {
width: 100%;
height: 100%;
background-color: red;
}
.bluebox {
width: 100%;
height: 100%;
background-color: blue;
}
<div class="boxes">
<div class="bluebox"></div>
<div class="redbox"></div>
</div>
解决方案
您正在使用箭头函数 ()=>clickMe() 创建一个新的回调。removeEventListener 无法确定要删除哪个 cb。您可以使用相同的参考来修复它
bluebox.addEventListener('click', clickMe);
bluebox.removeEventListener('click',clickMe);
推荐阅读
- c# - Xamarin.Fomrs SQLite DateTime 未通过查询正确插入
- phpstorm - 如何知道在使用 PhpStorm 自动格式化期间应用了哪些规则?
- javascript - React VS Code 外部脚本
- python - 如何在 scipy 优化中创建无法到达的边界?
- r - R 包:NAMESPACE 文件“不可读”
- ruby - 厨师在 ruby 块中使用 cookbook_file
- kubernetes - 是否可以在 KOPS 中使用 ALB 修补 Kubernetes svc?
- google-analytics - BigQuery Analytics 当天查询
- java - 如何在 JAVA 密钥库中信任由内部 CA 签名的证书
- flutter - 如何在BottomAppBar颤动上以编程方式更改选项卡?