@as_viper
Начинающий веб-разработчик

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

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

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

document.addEventListener('click', e => {
  const
    t = e.target,
    heading = t.closest('.panel-heading'),
    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.toggle('in', n === collapse && !n.classList.contains('in'));
    });
  }
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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