@Korifa

Как удалить обработчик события?

Видел похожий вопрос, но все равно не могу понять как удалить и правильно ли я их прикрепил ?
В конструкторе добавил обработчик:
this.button_right.addEventListener('click', this.play_right.bind(this));

А в другом методе пытаюсь его удалить, но ничего не выходит:
this['button_' + name].removeEventListener('click', this['play_' + name]);
this['button_style_' + name].style.stroke = 'lightgrey';
this[name] = 0;
  • Вопрос задан
  • 4473 просмотра
Решения вопроса 2
Для удаления обработчика события, нужно передать ту же функцию, которую передавали при создании обработчика события.

Метод bind создаёт новую функцию: https://developer.mozilla.org/ru/docs/Web/JavaScri...

Не вижу всей картины, происходящего у вас. Я делаю примерно так:

class SomeModule {
  constructor() {
    this.handlerShim = (e) => {
      this.handler(e);
    };
  }

  method1() {
    document.addEventListener('click', this.handlerShim);
  }

  method2() {
    document.removeEventListener('click', this.handlerShim);
  }

  handler(e) {
    console.log(e);
  }
}
Ответ написан
Комментировать
virtual_hack2root
@virtual_hack2root
.NET Core, JS, DevOps
var handler_button_right_click = this.play_right.bind(this);
this.button_right.addEventListener('click', handler_button_right_click);
//...
this.button_right.removeEventListener('click', handler_button_right_click);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы