Задать вопрос
@steklovatnik

Как отписаться от события, если оно обрабатывается замыканием?

Понадобилось передать переменную в обработчик события, понял, что могу использовать замыкание, вот только отписаться от этого обработчика потом не могу.
Какие есть варианты? Или такой подход лучше не использовать.

document.body.addEventListener("click", clickHand("WOW!"));

function clickHand(str) {
  return function (e) {
    console.log(e.target);
    console.log(str);
    document.body.removeEventListener("click", () => clickHand());
  };
}
  • Вопрос задан
  • 94 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Положить итоговый обработчик в переменную, и её использовать для removeEventListener()
Примерно так:
document.body.addEventListener("click", clickHand("WOW!"));

function clickHand(str) {
  const handler = ({ target }) => {
    console.log(target);
    console.log(str);
    document.body.removeEventListener("click", handler);
  };

  return handler;
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
03 февр. 2025, в 23:45
3000 руб./за проект
03 февр. 2025, в 22:54
20000 руб./за проект
03 февр. 2025, в 21:56
2000 руб./за проект