2017-07-19 57 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>