@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());
  };
}
  • Вопрос задан
  • 72 просмотра
Решения вопроса 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;
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
17 апр. 2024, в 00:48
35000 руб./за проект
17 апр. 2024, в 00:13
800 руб./за проект
17 апр. 2024, в 00:06
240000 руб./за проект