Как поместить один accordion в другой чтобы не конфликтовали?

Необходимо один accordion из bootstrap поместить в другой так чтобы при раскрытии первого не раскрывались/закрывались пункты второго, и третий еще есть.
вот код (получилось что при открытии пункта первого открываются все остальные, пункты второго закрываются более нормально, но при закрытии пункта третьего закрывается первый)
<ul class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> 

<?php
foreach ($categories as $category) {
?>

    <?php
    $classes  = '';
    $classes2 = '';
    if ($category['category_id'] == $category_id) {
        $classes .= ' active';
        $classes2 = ' in';
    }
    
    if ($category['children']) {
        $classes .= ' dropdowndropdown-submenu';
    }
?>
       <li class="<?php
    echo $classes;
?> <?php
    if ($category['children']):
?>panel panel-default<?
    endif;
?>" >
            <a <?php
    if (empty($category['children'])):
?>href="<?php
        echo $category['href'];
?>" title="<?php
        echo $category['name'];
?>"<?
    else:
?>class="collapsed act" role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse<?
        echo $category['category_id'];
?>" aria-expanded="false" aria-controls="collapse<?
        echo $category['category_id'];
?>"<?
    endif;
?>>
                <?php
    echo $category['name'];
?>
           </a> 

            <?php
    if ($category['children']) {
?>
           <ul class="dropdowndropdown-menu panel-collapse collapse <?php
        echo $classes2;
?> " id="collapse<?
        echo $category['category_id'];
?>" role="tabpanel" aria-labelledby="heading<?
        echo $category['category_id'];
?>">
                <?php
        
        foreach ($category['children'] as $child) {
            $classes = '';
            if ($child['children']) {
                $classes .= ' dropdowndropdown-submenu';
            }
            foreach ($child['children'] as $cha) {
                if (strpos($child['act'], '_' . $cha['category_id']))
                    $classes .= ' active';
                $classes2 = ' in';
            }
            if (strpos($child['act'], '_' . $child['category_id'])) {
                $classes .= ' active';
                $classes2 = ' in';
            }
            
?>
               <?php
            if ($child['children']):
?><div class="" id="accordion<?
                echo $child['category_id'];
?>"><?
            endif;
?>
               <li class="<?php
            echo $classes;
?> <?php
            if ($child['children']):
?>panel panel-default<?
            endif;
?>">
                    <a <?php
            if (empty($child['children'])):
?>href="<?php
                echo $child['href'];
?>" title="<?php
                echo $child['name'];
?>"<?
            else:
?>class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion<?
                echo $child['category_id'];
?>" href="#collapse<?
                echo $child['category_id'];
?>" aria-expanded="false" aria-controls="collapse<?
                echo $child['category_id'];
?>"<?
            endif;
?>> <?php
            echo $child['name'];
?></a>
                    <?php
            if ($child['children']) {
?>
                   
                    <ul class="dropdowndropdown-menu panel-collapse collapse <?
                echo $classes2;
?>" id="collapse<?
                echo $child['category_id'];
?>" role="tabpanel" aria-labelledby="heading<?
                echo $child['category_id'];
?>">
                        <?php
                
                foreach ($child['children'] as $subChild) {
                    $classes = '';
                    if ($subChild) {
                        $classes .= ' dropdowndropdown-submenu';
                    }
                    
                    if (strpos($_SERVER['REQUEST_URI'], $subChild['category_id'])) {
                        $classes .= ' active';
                        $classes2 = ' in';
                    }
?>
                       <li class="<?php
                    echo $classes;
?>">
                            <a href="<?php
                    echo $subChild['href'];
?>" title="<?php
                    echo $subChild['name'];
?>"><?php
                    echo $subChild['name'];
?></a>
                        </li>
                        <?php
                }
?>
                   </ul>
                        <?php
            }
?>
               </li>
                <?php
            if ($child['children']):
?></div><?
            endif;
?>
               <?php
        }
?>
           </ul>

                <?php
    }
?>

        </li>
<?php
}
?>
   </ul>
  • Вопрос задан
  • 256 просмотров
Пригласить эксперта
Ответы на вопрос 1
@55igor_lebedev
фронтэнд
Блин, а зачем так много всего? Главное праильно подобрать аккардеоны и все будет замечательно работать. Естественно необходимо убедиться, что не повторяются одни и те же классы в разны аккардеонах. Недано решал такую проблемму для ребят с Украины, все отлично работает, использовал JS
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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