gpt4 book ai didi

javascript - 在 JavaScript 中删除事件监听器

转载 作者:数据小太阳 更新时间:2023-10-29 05:45:49 26 4
gpt4 key购买 nike

我向一个元素添加一个事件监听器:

/* 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 中,我想再次删除处理程序,以防止重复点击:

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 的代码。如何移除事件监听器以防止被点击的元素再次被点击?

PS:我不使用 jQuery。

最佳答案

我相信您快到了,但是您必须将 listener 传递给 removeEventListener,而不是事件本身。所以尝试:

target.removeEventListener('click', myFunction, false);

关于javascript - 在 JavaScript 中删除事件监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8841138/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com