@yuumatov
FrontEnd разработчик, минималист

Как удалить класс блока при клике вне блока?

Сразу говорю что в JS я очень зеленый еще, так что больно не бейте ;)
Написал аналог select-а html, не могу сделать закрытие пунктов при клике вне select-а, помогите.

Код на CodePen
  • Вопрос задан
  • 100 просмотров
Пригласить эксперта
Ответы на вопрос 1
Aleksandr-JS-Developer
@Aleksandr-JS-Developer
Бери и делай
Вам нужен хоть какой-то слой абстракции для удобной реализации подобного функционала
Когда я писал нечто подобное, то у меня для каждого select`a был отдельный экземпляр класса, в котором хранилась ссылка на контейнер самого селекта.
Это позволило мне отслеживать клики вне текущего селекта вот таким образом:

// *При инициализации экземпляра класса*
  // this.contain - ссылка на контейнер самого селекта.
  // this.close() - метод, который закрывает селект
  // this.condition - Объект, с текущим состоянием селекта

  document.addEventListener( 'click', e => {
    if( !e.path.includes( this.contain ) && this.condition.opened ){
      this.close();
    } 
  });


Вот код последней версии: jsfiddle
Ответ написан
Ваш ответ на вопрос

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

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