2017-07-19 110 views
0

我是相當新的使用Bootstrap的開發,我一直在嘗試創建一個下拉式具有可摺疊的功能,使任何具有下拉的子項可以顯示可摺疊的容器。[引導] - 奇怪的行爲時,下拉使用與崩潰

我發現了一些代碼網上這幾乎說明了什麼,我試圖完成:https://www.bootply.com/1u6VW4bsrR

我試着寫下來的HTML幾行代碼來實現類似於上面:

<div class="dropdown"> 
    <button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">Dropdown Example 
    <span class="caret"></span></button> 
    <ul class="dropdown-menu"> 
    <li> 
     <a data-toggle="collapse" href="#collapse1">HTML</a> 
     <div id="collapse1" class="panel-collapse collapse"> 
     <div class="panel-body"> 
      <ul class='dropdown-menu sub-menu'> 
      <li><a>Type 1</a></li> 
      <li><a>Type 2</a></li> 
      </ul> 
     </div> 
     </div> 
    </li> 
    <li><a href="#">CSS</a></li> 
    <li><a href="#">JavaScript</a></li> 
</ul> 
</div> 

Codepen鏈接:https://codepen.io/anon/pen/weLKzp/?editors=1010

但它給我很難。有兩種具體的行爲,我注意到:

  1. 當我點擊下拉,然後點擊可摺疊div(HTML)後,然後下拉消失。當點擊下拉菜單時,它就會顯示出來。
  2. 當下拉菜單顯示爲具有可摺疊div時,不會顯示具有摺疊面板正文的所有子條目。

你能幫我弄清楚需要改變的地方以及我做錯了什麼嗎?任何指針讚賞。

謝謝!

回答

1

在這個例子中,我創建了多層次的下拉菜單

請注意,我說的jQuery開上點擊多層次的下拉列表中選擇.dropdown-子類。

.dropdown-submenu { 
 
    position: relative; 
 
} 
 

 
.dropdown-submenu .dropdown-menu { 
 
    top: 0; 
 
    left: 100%; 
 
    margin-top: -1px; 
 
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/> 
 

 

 

 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
 

 
<div class="container"> 
 
    
 
    <div class="dropdown"> 
 
    <button class="btn btn-default dropdown-toggle" type="button" data-toggle="dropdown">Tutorials 
 
    <span class="caret"></span></button> 
 
    <ul class="dropdown-menu"> 
 
     <li><a tabindex="-1" href="#">HTML</a></li> 
 
     <li><a tabindex="-1" href="#">CSS</a></li> 
 
     <li class="dropdown-submenu"> 
 
     <a class="test" tabindex="-1" href="#">New dropdown <span class="caret"></span></a> 
 
     <ul class="dropdown-menu"> 
 
      <li><a tabindex="-1" href="#">2nd level dropdown</a></li> 
 
      <li><a tabindex="-1" href="#">2nd level dropdown</a></li> 
 
      <li class="dropdown-submenu"> 
 
      <a class="test" href="#">Another dropdown <span class="caret"></span></a> 
 
      <ul class="dropdown-menu"> 
 
       <li><a href="#">3rd level dropdown</a></li> 
 
       <li><a href="#">3rd level dropdown</a></li> 
 
      </ul> 
 
      </li> 
 
     </ul> 
 
     </li> 
 
    </ul> 
 
    </div> 
 
</div> 
 

 

 
<script> 
 
$(document).ready(function(){ 
 
    $('.dropdown-submenu a.test').on("click", function(e){ 
 
    $(this).next('ul').toggle(); 
 
    e.stopPropagation(); 
 
    e.preventDefault(); 
 
    }); 
 
}); 
 
</script>