首页 > 解决方案 > 添加和删​​除事件侦听器 - 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。

我应该怎么办 ?

标签: javascriptmouseeventaddeventlistener

解决方案


你可以用 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 点击事件

用你的函数替换警报


推荐阅读