javascript - 事件发生后删除 JavaScript 中的 EventListener?

标签 javascript dom-events

有 24 个 div 对象等待/监听鼠标单击。单击一个 div 对象后,我想删除 EventListener来自所有 24 个 div 对象。

for (var i=1;i<=24;i++){
    document.getElementById('div'+i).addEventListener('click',function(event){
        for (var z=1;z<=24;z++){
            document.getElementById('div'+z).removeEventListener()//Problem lies here
        }

        //Some other code to be run after mouseclick

        },false);

}

问题是 removeEventListener嵌套在 addEventListener我需要将类型、监听器、标题定义为 removeEventListener 的属性方法。而且我认为由于嵌套而无法定义监听器。

我也尝试定义一个函数名,但没有奏效:
for (var i=1;i<=24;i++){
    document.getElementById('div'+i).addEventListener('click',function helpme(event){
        for (var z=1;z<=24;z++){
            document.getElementById('div'+z).removeEventListener('click',helpme,false);
        }

        //Some other code to be run after mouseclick

        },false);

}

最佳答案

您可以告诉事件监听器只触发一次:

document.addEventListener("click", (e) => {
            // function which to run on event
}, { once: true });
文档说:
once:
A boolean value indicating that the listener should be invoked at most once after being added. If true, the listener would be automatically removed when invoked.

关于javascript - 事件发生后删除 JavaScript 中的 EventListener?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3723914/

相关文章:

javascript - 如何在 JavaScript 中抛出 mouseEvent?

javascript - 在 iPad 上运行时,Mobile Safari 中即将切换标签页的 Pagehide 事件不会触发

javascript - 使用 JavaScript 隐藏和显示元素

javascript - 如何将 id 设置为 id h :commandLink from a c:forEach in order to be accesed by JS?

Javascript:getFullyear() 不是函数

javascript - 如何在一个单独的 div 中加载多个网页?

JavaScript 函数 - 为什么它有效?

javascript - dropBefore 事件未按预期工作

javascript - 事件委托(delegate)在 JavaScript 内部如何工作

javascript - 如何从 Angular 6 中的组件更新 formArray 的值