Как удалить слушателя «самого себя» removeEventListener?

Как удалить самого себя из слушателей?

var handler_some = document.addEventListener('click', function (e) {
        this.removeEventListener('click', handler_some );
    });
  • Вопрос задан
  • 2174 просмотра
Решения вопроса 3
marginBottom
@marginBottom
document.addEventListener('click', function handler(e) {
    this.removeEventListener('click', handler);
});
Таким образом в глобальную область видимости не попадает функция, которая будет использована только в одном месте.
Ответ написан
Комментировать
0xD34F
@0xD34F Куратор тега JavaScript
function handler(e) {
  console.log('hello, world!!');
  this.removeEventListener(e.type, handler);
}

document.addEventListener('click', handler);

Но вообще, если вам нужен обработчик события, который сработает один раз, то вручную удалять его не надо, для этого есть отдельная настройка среди параметров addEventListener:

document.addEventListener('click', handler, { once: true });
Ответ написан
Комментировать
dollar
@dollar
Делай добро и бросай его в воду.
Нужно сохранить ссылку на функцию в имени какой-то переменной, и дальше использовать эту переменную. Или можно просто объявить функцию с именем отдельно, что то же самое. Анонимная функция не подходит.
let fn = function (e) {
  document.removeEventListener('click',fn);
}
document.addEventListener('click', fn);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы