[Bootstrap]- Dropdown 与 Collapse 一起使用时的奇怪行为
Posted
技术标签:
【中文标题】[Bootstrap]- Dropdown 与 Collapse 一起使用时的奇怪行为【英文标题】:[Bootstrap]- Odd behavior when Dropdown used with Collapse 【发布时间】:2017-07-19 01:32:44 【问题描述】:我对使用 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
但这让我很难过。我注意到了两种特定的行为:
-
当我点击下拉菜单并点击可折叠 div(HTML) 后,下拉菜单消失。当点击下拉菜单时,它会显示出来。
当下拉菜单显示为具有可折叠 div 时,所有具有可折叠面板主体的子项都不会出现。
您能帮我找出需要更改的地方以及我做错了什么吗?任何指针表示赞赏。
谢谢!
【问题讨论】:
【参考方案1】:在这个例子中,我为多级下拉菜单创建了一个 .dropdown-submenu 类
请注意,我添加了 jQuery 以在单击时打开多级下拉菜单。
.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>
【讨论】:
以上是关于[Bootstrap]- Dropdown 与 Collapse 一起使用时的奇怪行为的主要内容,如果未能解决你的问题,请参考以下文章
Keep-bootstrap-3-dropdown-open-when-clicked
AngularJs的UI组件ui-Bootstrap分享——Buttons和Dropdown
AngularJs的UI组件ui-Bootstrap分享——Buttons和Dropdown