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