Задать вопрос
@as_viper
Начинающий веб-разработчик

Почему в аккордеоне происходит скачек(открывает первый блок, затем все остальные разом)?

Почему в аккордеоне по клику на кнопку происходит скачек?
А конкретнее, по дефолту открыт один блок, и при клике на кнопку аккордеон закрывает дефолтный блок и открывает все сразу блоки, а не поочередно, как и работает аккордеон.

Скрипт аккордеона
  • Вопрос задан
  • 134 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Во-первых, nextStep.nextElementSibling - это никакой не блок аккордеона. Во-вторых, условие кривое - открываете блок, если он не следующий (!==) и закрыт, т.е., открываете все, кроме закрываемого.

document.addEventListener('click', e => {
  const t = e.target;
  const heading = t.closest('.panel-heading');
  const nextStep = t.closest('.construct-btn');
  const collapse = 
    heading  ? heading.nextElementSibling :
    nextStep ? t.closest('.panel').nextElementSibling.querySelector('.panel-collapse') :
               null;

  if (collapse) {
    e.preventDefault();
    t.closest('.panel-group').querySelectorAll('.panel-collapse').forEach(n => {
      n.classList[n === collapse ? 'toggle' : 'remove']('in');
    });
  }
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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