Artiiiii
@Artiiiii
Junior-front-end

Удалить прослушивание события в классе?

Метод класса выполняет переключение отображения блока при движении мыши над элементами, но после клика прослушивание данного события должны удаляться. Если прописать функцию внутри класса все ок, но если вынести в метод все менее радужно. Можно ли реализовать removeEventListener удаление метода класса, а не функции?

Метод класса
Функция
  • Вопрос задан
  • 171 просмотр
Решения вопроса 1
Artiiiii
@Artiiiii Автор вопроса
Junior-front-end
Метод внутри класса нужно записать в функцию, если кому будет нужно.

class Temp {
  constructor(parent) {
    this.parent = parent;
    this.title = this.parent.querySelector('.title');
    this.overlay = this.parent.querySelector('.overlay');

    const show = () => this.show();

    this.title.addEventListener('mouseover', show);
    this.overlay.addEventListener('mouseout', show);

    this.overlay.addEventListener('click', () => {
      this.title.removeEventListener('mouseover', show);
      this.overlay.removeEventListener('mouseout', show);
      show();
    });
  }

  show() {
    if (!this.overlay.classList.contains('overlay--visible')) {
      this.overlay.classList.add('overlay--visible');
    } else {
      this.overlay.classList.remove('overlay--visible');
    }
  }
}

let temp = document.querySelector('.container');
new Temp(temp);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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