JavaScript通过事件引用删除EventListener

JavaScript通过事件引用删除EventListener,javascript,events,dom-events,Javascript,Events,Dom Events,我将事件存储在变量中,如下所示: var lastEvent; document.getElementById("button-1").addEventListener("click", function(){ // Stores the event to the variable lastEvent lastEvent = arguments[0]; }); 现在我想通过引用lastEvent删除事件侦听器 document.getElementById("bu

我将事件存储在变量中,如下所示:

var lastEvent;

document.getElementById("button-1").addEventListener("click", function(){

     // Stores the event to the variable lastEvent

     lastEvent = arguments[0];

});
现在我想通过引用lastEvent删除事件侦听器

 document.getElementById("button-2").addEventListener("click", function(){

     // This doesn't work, obviously

    lastEvent.removeEventListener();

});

你知道这是否可行吗

要删除事件处理程序,您需要:

  • 元素处理程序附加到的元素
  • 要删除的函数
所以你需要像

let lastEvent;
const trackingHandler = (event) => {
    lastEvent = event
};
const removingHandler = (event) => {
    const element = lastEvent.target;
    element.removeEventListener(trackingHandler);
};
document.getElementById("button-1").addEventListener("click", trackingHandler);
document.getElementById("button-2").addEventListener("click", removingHandler);

…如果存在多个trackingHandler函数,则需要额外的逻辑来区分多个trackingHandler函数。

在任何情况下,您只能使用对添加的事件侦听器的引用,而不能使用触发的事件,因此如果不将处理函数保存在某个位置,则无法实现所需的功能。是的,这就是我想知道的——如果这有可能的话。我会找到解决办法的。谢谢你的回复!