此导航栏对于所有浏览器大小都是折叠的。我想知道如何能够在单击菜单外时关闭展开的菜单。这样切换按钮就不是关闭它的唯一方法了。
我已经尝试了一些关于Bootstrap 3的建议,其中之一是下面包含的Javascript代码,但它们似乎不起作用。
我可能不太懂Javascript或PHP,但我愿意接受你的任何建议。谢谢!
<nav class="navbar navbar-inverse bg-faded">
<button class="navbar-toggler navbar-toggler-left" type="button" data-toggle="collapse" data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<span class="navbar-text"> </span>
<div class="collapse navbar-collapse" id="navbarNavDropdown">
<ul class="navbar-nav flex-column">
<li class="nav-item active">
<a class="nav-link" href="http://touruapp.com/">Home <span class="sr-only">(current)</span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="http://touruapp.com/about-us-2/">About Us</a>
</li>
<li class="nav-item">
<a class="nav-link" href="http://touruapp.com/contact-2/">Contact</a>
</li>
<li class="nav-item">
<a class="nav-link" href="http://touruapp.com/support-2/">Support</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="http://example.com" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Legal
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
<a class="dropdown-item" href="http://touruapp.com/terms-2/">Terms</a>
<a class="dropdown-item" href="http://touruapp.com/privacy-2/">Privacy</a>
</div>
</li>
</ul>
</div>
</nav>
<script>
$(document).click(function (event) {
var clickover = $(event.target);
var $navbar = $(".navbar-collapse");
var _opened = $navbar.hasClass("in");
if (_opened === true && !clickover.hasClass("navbar-toggle")) {
$navbar.collapse('hide');
}
});
</script>
4条答案
按热度按时间htrmnn0y1#
如果您正在使用Bootstrap 4,请尝试以下JQuery
点击切换器
$(".navbar-toggler").click();
,将in
替换为show
类,将navbar-toggle
替换为navbar-toggler
,而不是隐藏应用工作提琴:https://jsfiddle.net/rg43fyhL/
第一次
dwthyt8l2#
下面的jQuery代码对我来说运行得很好:
说明:
如果导航栏切换器按钮的
aria-expanded
属性为false
,即导航栏已折叠,则不执行任何操作。如果导航栏切换器按钮的
aria-expanded
属性为true
,则在关闭导航栏之前,我们必须检查单击是在导航栏上进行的还是在导航栏之外进行的,这可以通过检查单击目标的任何祖先是否包含navbar
类来轻松验证。如果click-target元素(单击所针对的元素)的任何祖先包含
navbar
类,则clickOver.closest('.navbar').length
将返回1
,否则将返回0
。因此,如果导航栏切换器按钮的
aria-expanded
属性为true
(导航栏未折叠)并且clickOver.closest('.navbar').length
返回0
(click-target元素没有navbar
类的祖先),则通过单击导航栏切换器按钮折叠导航栏,否则不执行任何操作。ui7jx7zq3#
正如我提到的here,您可以使用Vanilla Javascript检查所单击的元素是否是同一导航栏的子元素,以及您想要隐藏的内容(下拉列表)是否正在显示。
https://jsfiddle.net/j4tgpbxz/
bkhjykvo4#
请尝试此答案的修改版本,在Bootstrap 4.6.2上效果很好
https://jsfiddle.net/x7kwn8ze/1/