JavaScript удалить EventListener по ссылке на событие - PullRequest
0 голосов
/ 30 октября 2019

Я сохраняю событие в переменной следующим образом:

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 Ответ

2 голосов
/ 30 октября 2019

Чтобы удалить обработчик события, вам необходимо:

  • Элемент, к которому подключен обработчик элемента
  • Функция, которую вы хотите удалить

Таким образом, вам понадобится что-то вроде ...

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 функций, если их было более одной.

...