javascript - 添加和删除事件侦听器 - JavaScript
问题描述
当我单击 div 时,我正在尝试添加 addEventListener。我已经找到了很多问题和答案,但我没有让它发挥作用。实际上,我想将一些参数传递给我的 eventListener。
一开始我试过这个:
document.getElementsByClassName('my-div')[0].addEventListener('click', customFunction(event, args1, args2));
但它不起作用。确实,单击它并没有进入customFunction
.
因此,我尝试了bind
:
document.getElementsByClassName('my-div')[0].addEventListener('click', customFunction.bind(null, event, args1, args2));
这一次,点击一下它就进入了customFunction
.
但是,参数事件是 Event 类型而不是 MouseEvent。在事件对象中,我无法访问 currentTarget 或我通常在带有 addEventListener 的事件中找到的东西。
这可能是因为这里的事件是 Event 类型,而通常它是 MouseEvent 类型。
我虽然使用这样的匿名函数:
element.addEventListener("click", function() {
// do something
});
但我需要删除 eventListener 并且使用 anynomous 函数它不会被清理这样做。最好存储对象函数,以便在此之后删除 addEventListener。
我应该怎么办 ?
解决方案
你可以用 JQuery 来绑定事件
$( "#target" ).click(function() {
alert( "Handler for .click() called." );
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div id="target">
Click here
</div>
<div id="other">
Trigger the handler
</div>
REF : JQuery 点击事件
用你的函数替换警报
推荐阅读
- python - python相当于r的??搜索功能
- wpf - 侧边栏wpf中具有多个可折叠子菜单的侧边栏
- google-bigquery - BQ STRUCT 与 RECORD 类型?
- google-analytics - Google Analytics 演示/沙盒帐户
- python-3.x - 有没有办法在 Altair 中选择或突出显示最后一个或第一个“n”个数据点?
- php - 致命错误:无法声明类 InterdraftFactuursturen,因为该名称已在
- filter - DeepFix - 位置偏向卷积
- javascript - 更改元素永远不会触发 addEventListener
- linux - 发现:在 Ubuntu Server 18.4 中缺少 `-exec' 的参数
- google-apps-script - Gmail 两次发送电子邮件