Держите классы на аккордеонах, если нажимаются другие кнопки - PullRequest
0 голосов
/ 13 июля 2020

У меня такая структура HTML аккордеонов. 3.

<div id="accordion<?php echo $accordion_id ?>" role="tablist" class="accordion--contact-us">
  <div class="card-header" role="tab" id="<?php echo $accordion_title . $accordion_id ?>">
                <h5 class="my-0 font-weight-bold h3">
                    <a class="dnt link collapsed py-3 accordion-tabs" data-toggle="collapse" href="#collapse<?php echo $accordion_title . $accordion_id ?>" aria-expanded="false"
                        aria-controls="collapse<?php echo $accordion_title . $accordion_id ?>">
                        <?php echo $accordion_title ?>
                        <i class="far fa-angle-down"></i>
                    </a>
                </h5>
  </div>
</div>

У меня установлен jquery, где, если вы откроете аккордеон и снова щелкните по нему, он закроется. Однако проблема в том, что на странице несколько аккордеонов. Если я нажимаю все, скажем, 5 аккордеонов в одном аккордеоне, все работает нормально. Но когда я нажимаю на другой аккордеон, когда оригинал был открыт, он удаляет этот класс.

Что мне может не хватать. Часть if работает, а не else. Если щелкнуть тот же элемент, он закрывает мелкое добавление / удаление классов. Но если я нажму на .card-header в другом аккордеоне, класс .isActive будет удален из всех, кроме того, который только что щелкнул. Итак, открытые классы .isActive удаляются.

    $('.card-header').on('click', function() {

        if ($(this).hasClass('isActive')) {
            $('.card-header').removeClass('isActive');
            $(this).find('a').blur();
        } else {
            $('.card-header').removeClass('isActive');
            $(this).toggleClass('isActive');
        }

    })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...