Складная гармошка не работает внутри Bootstrap dropdpwn-menu

Я хочу смешать выпадающее и свернутое меню вместе, но когда я внедряю аккордеон внутри выпадающего меню, вы не можете нажать на переключатель аккордеона. Раскрывающееся меню скользит вверх.

Вот мой код

<ul class="nav nav-pills">
  <li class="dropdown" id="menu1">
    <a class="dropdown-toggle" data-toggle="dropdown" href="#menu1">
      Dropdown
      <b class="caret"></b>
    </a>

    <ul class="dropdown-menu">

      <li>
        <a href="#">Action</a>
      </li>

      <li class="divider"></li>

      <li>
        <a href="#">Separated link</a>
      </li>

      <li>
        <div class="accordion" id="accordion2">  

          <div class="accordion-group"> 

            <a class="accordion-toggle" 
               data-toggle="collapse" 
               data-parent="#accordion2" 
               href="#demo1">

               aaa

            </a> 

            <div id="demo1" class="accordion-body collapse" style="height: 0px; ">  
              <ul class="index-list">
                 ......
              </ul>              
            </div>                
          </div>   

          <div class="accordion-group">  

            <a class="accordion-toggle" 
               data-toggle="collapse" 
               data-parent="#accordion2" 
               href="#demo2">

               aaa

            </a>   

            <div id="demo2" class="accordion-body collapse">  
              <ul class="index-list">
               ......
              </ul>             
            </div>               
          </div>  
        </div>
      </li>
    </ul>
  </li>
  ...
</ul>​

Вот ссылка на jsFiddle: http://jsfiddle.net/DBQU7/26/

1 ответ

Я не думаю, что аккордеоны должны были быть включены в выпадающие списки.

Я думаю, вы должны сами запустить аккордеон и избежать дополнительной разметки, которая обычно требуется для аккордеона. Таким образом, вы можете сохранить стиль выпадающего меню.

Вот что я придумал.

Живой пример: http://jsfiddle.net/Sherbrow/YqsTw/

<ul class="nav nav-pills">
    <li class="dropdown" id="menu1">
        <a class="dropdown-toggle" data-toggle="dropdown" href="#menu1">
    Dropdown
            <b class="caret"></b>
        </a>
        <ul class="dropdown-menu">
            <li>
                <a href="#">Action</a>
            </li>
            <li class="divider"/>
            <li>
                <a href="#">Another action</a>
            </li>
            <li class="divider"/>
            <li>
                <a href="#collapsible1" class="accordion-toggle" data-parent="#menu1">Accordion 1</a>
            </li>
            <li class="collapse in" id="collapsible1">
                <a href="#">Collapsible 1</a>
            </li>
            <li class="divider"/>
            <li>
                <a href="#" data-target=".collapse2" class="accordion-toggle" data-parent="#menu1">Accordion 2</a>
            </li>
            <li class="collapse collapse2">
                <a href="#">Collapsible 2</a>
            </li>
            <li class="collapse collapse2">
                <a href="#">Collapsible 2 bis</a>
            </li>
        </ul>
    </li>
</ul>
$('.dropdown-toggle').dropdown();
$('.dropdown-menu').each(function() {
    $(this).on('click', '.accordion-toggle', function(event) {
        event.stopPropagation();
        var $this = $(this);

        var parent = $this.data('parent');
        var actives = parent && $(parent).find('.collapse.in');

        // From bootstrap itself
        if (actives && actives.length) {
            hasData = actives.data('collapse');
            if (hasData && hasData.transitioning) return;
            actives.collapse('hide');
        }

        var target = $this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, ''); //strip for ie7

        $(target).collapse('toggle');
    });
});
Другие вопросы по тегам