Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 删除需要参数的事件侦听器_Javascript_Addeventlistener - Fatal编程技术网

Javascript 删除需要参数的事件侦听器

Javascript 删除需要参数的事件侦听器,javascript,addeventlistener,Javascript,Addeventlistener,我有: 我需要能够移除它 如果我不使用匿名函数以便使用removeEventListener,如何将其传递给命名函数 e.addEventListener("click",()=>{alert(this.innerText);}); 你唯一的问题是,你没有任何处理你的函数,因为你是内联声明它。您只需移动同一声明并将其分配给变量: function f() { //how do I access the "this"? } e.addEventListener("click", f

我有:

我需要能够移除它

如果我不使用匿名函数以便使用removeEventListener,如何将其传递给命名函数

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();
});