Почему не удаляется обработчик события клика?

Сделал кастомный селект с чекбоксами.
https://codepen.io/corvus-007/pen/OYeGbL?editors=0010
Когда он раскрыт, при клике снаружи селекта он дожен закрываться и удаляться слушатель события клика на window.
closeSelect() {
  this.select.classList.remove('checkboxes-select--open');
  window.removeEventListener('click', this.onclickWindowHandler.bind(this));
}

Но клики все равно фиксируются. Что я сделал не так, не могу понять причину.
spoiler
5cfbd044d708c379096123.png
  • Вопрос задан
  • 45 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Метод bind() создаёт каждый раз новую копию функции.

Для отмены слушателя нужно передать именно действующий обработчик, а не похожий.
Запишите его в переменную и далее действуйте с переменной:
const listener = this.onclickWindowHandler.bind(this);
window.addEventListener('click', listener);
// ...
window.removeEventListener('click', listener);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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