Javascript 删除需要参数的事件侦听器
我有: 我需要能够移除它 如果我不使用匿名函数以便使用removeEventListener,如何将其传递给命名函数Javascript 删除需要参数的事件侦听器,javascript,addeventlistener,Javascript,Addeventlistener,我有: 我需要能够移除它 如果我不使用匿名函数以便使用removeEventListener,如何将其传递给命名函数 e.addEventListener("click",()=>{alert(this.innerText);}); 你唯一的问题是,你没有任何处理你的函数,因为你是内联声明它。您只需移动同一声明并将其分配给变量: function f() { //how do I access the "this"? } e.addEventListener("click", f
e.addEventListener("click",()=>{alert(this.innerText);});
你唯一的问题是,你没有任何处理你的函数,因为你是内联声明它。您只需移动同一声明并将其分配给变量:
function f() {
//how do I access the "this"?
}
e.addEventListener("click", f);
我通常只是创建一个更友好的函数来使用
const cb = () => alert(this.innerText);
e.addEventListener('click', cb);
e.removeEventListener('click', cb);
所以你可以做一些事情,比如
const listen = (el, ...args) => {
el.addEventListener(...args);
return{
remove: () => el.removeEventListener(...args)
};
};
您可以将这个-元素分配给一个全局数组,该数组使用自定义ID和arrayelm.removeListener跟踪事物,我猜,与您之前访问的相同。你也没有把这个传给匿名者。这只是因为JS的工作方式。也许可以尝试event.src元素并将event作为参数添加到函数中?您还可以使用const f==>{…},以便您的函数以相同的方式运行。
const listener = listen(document, 'click', () => {
console.log('click');
listener.remove();
});