【发布时间】:2020-07-21 02:12:55
【问题描述】:
使用一些自定义 jQuery 和 CSS 创建了一个 Bootstrap 多级下拉导航栏。
但在移动设备中切换打开和关闭子菜单存在问题。
请看一下:
$('.dropdown').hover(function() {
$(this).children('.dm-lv1').toggleClass('show');
e.preventDefault();
});
$('.dropdown-submenu').hover(function() {
$(this).children('.dm-lv2').toggleClass('show');
e.preventDefault();
});
.dropdown-submenu {
position: relative;
}
.dropdown-submenu a::after {
transform: rotate(-90deg);
position: absolute;
right: 6px;
top: .8em;
}
.dropdown-menu {
top: 0;
left: 100%;
box-shadow: 0 0px 5px rgba(0, 0, 0, 0.4);
}
.dropdown-menu {
top: 90%;
padding: 0;
border: 0;
border-radius: 0;
border-top: 2px solid #333;
background: #eee;
}
.dropdown-item {
padding: .5rem 1rem;
}
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"></script>
<nav class="navbar navbar-expand-lg navbar-light">
<div class="container">
<a class="navbar-brand" href="#">Brand</a>
<button class="navbar-toggler" 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>
<div class="collapse navbar-collapse" id="navbarNavDropdown">
<ul class="navbar-nav ml-auto">
<li class="nav-item active"><a class="nav-link" href="#">Home</a></li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Products
</a>
<ul class="dropdown-menu dm-lv1 animate slideIn" aria-labelledby="navbarDropdownMenuLink">
<li><a class="dropdown-item" href="#">Dropdown Menu</a></li>
<li><a class="dropdown-item" href="#">Dropdown Menu</a></li>
<li class="dropdown-submenu">
<a class="dropdown-item dropdown-toggle" href="#">Submenu Items</a>
<ul class="dropdown-menu dm-lv2 animate slideIn">
<li><a class="dropdown-item" href="#">Submenu action</a></li>
<li><a class="dropdown-item" href="#">Submenu action</a></li>
</ul>
</li>
</ul>
</li>
<li class="nav-item active"><a class="nav-link" href="#">Clients</a></li>
<li class="nav-item active"><a class="nav-link" href="#">News</a></li>
<li class="nav-item active"><a class="nav-link" href="#">Contact US</a></li>
</ul>
</div>
</div>
</nav>
如何在点击时切换(打开和关闭)此下拉菜单和子菜单下拉菜单?
【问题讨论】:
-
将 e 作为参数添加到事件的匿名函数中 - 例如 '$('.dropdown').hover(function(e) { ....'
标签: javascript html jquery css bootstrap-4