alex-lenk
@alex-lenk
Разработчик сайтов

Как оптимизировать, чтобы дважды не повторялся цикл forEach с одинаковыми селекторами?

Сделал dropdown на чистом JS. Все работает как надо, но хотел бы оптимизировать.

Как видите на 6 и 13 строчке повторяется перебор цикла forEach

dropdown.forEach((item) => {
})


  • Вопрос задан
  • 174 просмотра
Решения вопроса 1
alex-lenk
@alex-lenk Автор вопроса
Разработчик сайтов
В общем нашел оптимальный способ реализации dropdown на нативном JS:



document.addEventListener('DOMContentLoaded', () => {
  const dropdownEl = '.js__dropdown';
  const dropdownActive = 'dropdown-active';

  function dropdownEach() {
    document.querySelectorAll(dropdownEl).forEach((el) => {
      if (el.classList.contains(dropdownActive)) {
        el.classList.remove(dropdownActive)
      }
    })
  }

  document.addEventListener('click', (event) => {
    const target = event.target

    if (target.classList.contains('js__dropdown-toggle')) {
      dropdownEach()
      target.closest(dropdownEl).classList.add(dropdownActive);
    } else if (target.closest('.js__dropdown-close')) {
      dropdownEach()
    } else if (!target.classList.contains('js__dropdown-toggle') && !target.closest(dropdownEl)) {
      dropdownEach()
    }
  })
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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