JavaScript通过事件引用删除EventListener

时间:2019-10-30 15:39:19

标签: 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("button-2").addEventListener("click", function(){

     // This doesn't work, obviously

    lastEvent.removeEventListener();

});

有可能吗?

1 个答案:

答案 0 :(得分:2)

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

  • 附加了元素处理程序的元素
  • 您要删除的功能

因此,您将需要...

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 函数(如果存在多个函数)。