繁体   English   中英

在ES6中删除事件侦听器

[英]Remove event listener in ES6

我有以下代码:

document.getElementsByClassName('drag')[i].addEventListener('mousedown', (e) => {
    console.log('mousedown' + i);
});

如果我能够在侦听器中命名函数,那将很容易。 但在我的情况下,这是不可能的。

它看起来像:

e.currentTarget.removeEventListener(e.type, nameFunction);

有没有办法使它工作?

谢谢。

是的,你可以写这样的。

document.getElementsByClassName('drag')[i].addEventListener('mousedown', mouseDownFun);
function mouseDownFun(e){
  console.log('mousedown' + i);
}
e.currentTarget.removeEventListener(e.type, mouseDownFun);

因此,每当触发鼠标按下事件时,它将在mouseDownFun中侦听。

如果我能够在侦听器中命名函数,那将很容易。 但在我的情况下,这是不可能的。

如果它不允许你做你想做的事,请不要使用箭头功能。

document.getElementsByClassName('drag')[i].addEventListener('mousedown', function handler(e) {
    console.log('mousedown' + i);
    e.currentTarget.removeEventListener(e.type, handler);
});

有两种方法

  1. 定义函数时,在需要时添加和删除侦听器:

     // Define a function const handler = () => { console.log('Click event...'); } // Select the element and add event listener const img = document.querySelector('img'); img.addEventListener('click', handler, false); // ... // Remove the event listener img.removeEventListener('click', handler, false); 
  2. 添加事件侦听器并在事件中删除它时:

     // Select the element and add event listener const img = document.querySelector('img'); img.addEventListener('click', function handler(event) { console.log('Click event...'); // On event, remove the event listener event.currentTarget.removeEventListener(event.type, handler); }); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM