在JavaScript中删除事件侦听器 [英] Remove event listener in JavaScript
本文介绍了在JavaScript中删除事件侦听器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我向元素添加一个事件监听器:
I add an event listener to an element:
/* sitepoint.com/javascript-this-event-handlers */
function AttachEvent(element, type, handler){
if (element.addEventListener){
element.addEventListener(type, handler, false);
}else{
element.attachEvent("on"+type, handler);
}
}
window.addEventListener("load", function() {
var els = getElementsByClassName('name', 'img');
var elsnum = els.length;
if(elsnum) //found
{
var i = 0;
for(i=0; i < elsnum; i++)
{
var the_els = els[i];
AttachEvent(the_els, "click", myfunction);
}
}
}, false);
稍后在 myfunction
中,我想删除处理程序再次,以防止重复点击:
Later in myfunction
, I want to remove the handler again, to prevent duplicate clicks:
function myfunction(e) {
e = e || window.event;
var target = e.target || e.srcElement;
//more code
//...
//remove click handler
target.removeEventListener('click', e, false);
//more code
//...
}
但是事件监听器没有被删除。当我点击其中一个元素时,会再次执行 myfunction
的代码。如何删除事件监听器以防止再次单击被点击的元素?
The event listener is not being removed, though. When I click on one of the elements, the code of myfunction
is executed again. How can I remove the event listener to prevent the clicked element from being clicked again?
PS:我不使用jQuery。
PS: I do not use jQuery.
推荐答案
我相信你几乎就在那里,但你必须将监听器传递给 removeEventListener
,而不是事件本身。所以尝试:
I believe you're almost there, but you have to pass the listener to removeEventListener
, not the event itself. So try:
target.removeEventListener('click', myFunction, false);
这篇关于在JavaScript中删除事件侦听器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文