繁体   English   中英

Jquery 不关闭下拉

[英]Jquery is not closing drop-down

狗下拉菜单不会关闭点击宠物笼我正在使用 Bootstrap 导航栏构建多级(仅第二级)下拉菜单。 我可以找到一个指南来构建多级下拉列表。

JSFiddle 链接

但是,下拉菜单不会在点击时关闭。 下拉菜单可以通过单击Document来关闭,我在jquery下面添加了。

$(document).click(function(){
    $('.dropdown-menu').removeClass('show');
});

下拉菜单关闭,但是,在其他nav-item中单击时,打开的下拉菜单不会关闭。 因此,我缺少基本的JQuery 基本上show class 在其他nav-item中单击时不会从.dropdown-menu class 中删除。 所以,我想从.dropdown-menu中删除show class

编辑:我正在寻找工作JSJquery代码,上面的Jquery是从 staoverflow 复制的损坏代码。 所以,寻找完整和干净的解决方案

 $('.dropdown-menu a.dropdown-toggle').on('click', function(e) { if (.$(this).next().hasClass('show')) { $(this).parents('.dropdown-menu').first().find('.show');removeClass('show'). } var $subMenu = $(this).next(';dropdown-menu'). $subMenu;toggleClass('show'); return false; }). $(document).click(function() { // $('.dropdown-menu');toggleClass('show'). $('.dropdown-menu');removeClass('show'); }). $('.dropdown').click(function(event){ event;stopPropagation(); });
 .dropdown-submenu { position: relative; }.dropdown-submenu a::after { transform: rotate(-90deg); position: absolute; right: 6px; top: .8em; }.dropdown-submenu.dropdown-menu { top: 0; left: 100%; margin-left: .1rem; margin-right: .1rem; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous"> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/js/bootstrap.bundle.min.js" integrity="sha384-ygbV9kiqUc6oa4msXn9868pTtWMgiQaeYH7/t7LECLbyPA2x65Kgf80OJFdroafW" crossorigin="anonymous"></script> <nav class="navbar navbar-expand-md navbar-dark bg-primary py-1"> <div class="container-fluid"> <div class="flex-row d-flex"> <a class="navbar-brand" href="#">Brand</a> </div> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="navbar-collapse collapse" id="navbarSupportedContent"> <ul class="navbar-nav"> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" role="button" data-bs-toggle="dropdown" aria-expanded="false"> Dogs </a> <ul class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink"> <li><a class="dropdown-item" href="#">Bulldog</a></li> <li><a class="dropdown-item" href="#">Al</a></li> <li><a class="dropdown-item" href="#">Labrador</a></li> <li class="dropdown-submenu"><a class="dropdown-item dropdown-toggle" href="#">Puppies</a> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Husky</a></li> <li><a class="dropdown-item" href="#">Husky B</a></li> <li><a class="dropdown-item" href="#">Husky C</a></li> </ul> </li> <li class="dropdown-submenu"><a class="dropdown-item dropdown-toggle" href="#">Pet Products</a> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Cat</a></li> <li><a class="dropdown-item" href="#">Dogs</a></li> <li><a class="dropdown-item" href="#">Reptile</a></li> <li><a class="dropdown-item" href="#">Amphibian</a></li> </ul> </li> </ul> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" role="button" data-bs-toggle="dropdown" aria-expanded="false"> Pet Cages </a> <ul class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink"> <li><a class="dropdown-item" href="#">Cat</a></li> <li><a class="dropdown-item" href="#">Dogs</a></li> <li><a class="dropdown-item" href="#">Reptile</a></li> </ul> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" role="button" data-bs-toggle="dropdown" aria-expanded="false"> Pet Guides </a> <ul class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink"> <li><a class="dropdown-item" href="#">Labrador</a></li> <li><a class="dropdown-item" href="#">Cat</a></li> <li><a class="dropdown-item" href="#">Lizard</a></li> </ul> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" role="button" data-bs-toggle="dropdown" aria-expanded="false"> ML & AI </a> <ul class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink"> <li><a class="dropdown-item" href="#">Pet CBD</a></li> </ul> </li> <!-- <form class="d-flex"> --> <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"> <!-- <button class="btn btn-outline-success" type="submit">Search</button> --> <!-- </form> --> </ul> </div> </div> </nav>

对于持久性打开的DROPWON的主要问题,您可以通过侦听nav-link事件show.bs.dropdown来解决该问题,然后从.dropdown .dropdown-submenu包装的 .dropdown 中删除 show class

如下:

$('.nav-link').on('show.bs.dropdown', function(e) {
  $(".dropdown-submenu .dropdown-menu").removeClass("show");
});

请参阅下面的工作片段:(也可以全屏尝试)

为了测试,我从片段中删除了一些菜单:

 $('.dropdown-menu a.dropdown-toggle').on('click', function(e) { if (.$(this).next().hasClass('show')) { $(this).parents('.dropdown-menu').first().find('.show');removeClass('show'). } var $subMenu = $(this).next(';dropdown-menu'). $subMenu;toggleClass('show'); return false; }). $('.nav-link').on('show.bs,dropdown'. function(e) { $(".dropdown-submenu.dropdown-menu");removeClass("show"); }). $(document),on("click". ",nav-link". function(e){ console;log("clicl nav"). }) $('.dropdown').click(function(event) { console;log("click"). event;stopPropagation(); });
 .dropdown-submenu { position: relative; }.dropdown-submenu a::after { transform: rotate(-90deg); position: absolute; right: 6px; top: .8em; }.dropdown-submenu.dropdown-menu { top: 0; left: 100%; margin-left: .1rem; margin-right: .1rem; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/js/bootstrap.bundle.min.js"></script> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" /> <nav class="navbar navbar-expand-md navbar-dark bg-primary py-1"> <div class="container-fluid"> <div class="flex-row d-flex"> <a class="navbar-brand" href="#">Brand</a> </div> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="navbar-collapse collapse" id="navbarSupportedContent"> <ul class="navbar-nav"> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" role="button" data-bs-toggle="dropdown" aria-expanded="false"> Dogs </a> <ul class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink"> <li><a class="dropdown-item" href="#">Bulldog</a></li> <li><a class="dropdown-item" href="#">Al</a></li> <li><a class="dropdown-item" href="#">Labrador</a></li> <li class="dropdown-submenu"><a class="dropdown-item dropdown-toggle" href="#">Puppies</a> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Husky</a></li> <li><a class="dropdown-item" href="#">Husky B</a></li> <li><a class="dropdown-item" href="#">Husky C</a></li> </ul> </li> <li class="dropdown-submenu"><a class="dropdown-item dropdown-toggle" href="#">Pet Products</a> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Cat</a></li> <li><a class="dropdown-item" href="#">Dogs</a></li> <li><a class="dropdown-item" href="#">Reptile</a></li> <li><a class="dropdown-item" href="#">Amphibian</a></li> </ul> </li> </ul> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" role="button" data-bs-toggle="dropdown" aria-expanded="false"> Pet Cages </a> <ul class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink"> <li><a class="dropdown-item" href="#">Cat</a></li> <li><a class="dropdown-item" href="#">Dogs</a></li> <li><a class="dropdown-item" href="#">Reptile</a></li> </ul> </li> <!-- <button class="btn btn-outline-success" type="submit">Search</button> --> <!-- </form> --> </ul> </div> </div> </nav>

您无需添加jQuery即可实现此目的。 删除jQuery和其他javascript代码,您的下拉菜单将通过添加简单的css代码来工作。

 .dropdown-submenu { position: relative; }.dropdown-submenu >.dropdown-menu { top: 0; left: 100%; margin-top: -6px; margin-left: -1px; -webkit-border-radius: 0 6px 6px 6px; -moz-border-radius: 0 6px 6px; border-radius: 0 6px 6px 6px; }.dropdown-submenu:hover >.dropdown-menu { display: block; }.dropdown-submenu>a: after { display: block; content: " "; float: right; width: 0; height: 0; border-color: transparent; border-style: solid; border-width: 5px 0 5px 5px; border-left-color: #ccc; margin-top: 5px; margin-right: -10px; }.dropdown-submenu:hover > a: after { border-left-color: #fff; }.dropdown-submenu.pull-left { float: none; }.dropdown-submenu.pull-left >.dropdown-menu { left: -100%; margin-left: 10px; -webkit-border-radius: 6px 0 6px 6px; -moz-border-radius: 6px 0 6px 6px; border-radius: 6px 0 6px 6px; }
 <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous"> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/js/bootstrap.bundle.min.js" integrity="sha384-ygbV9kiqUc6oa4msXn9868pTtWMgiQaeYH7/t7LECLbyPA2x65Kgf80OJFdroafW" crossorigin="anonymous"></script> <nav class="navbar navbar-expand-md navbar-dark bg-primary py-1"> <div class="container-fluid"> <div class="flex-row d-flex"> <a class="navbar-brand" href="#">Brand</a> </div> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="navbar-collapse collapse" id="navbarSupportedContent"> <ul class="navbar-nav"> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" role="button" data-bs-toggle="dropdown" aria-expanded="false"> Dogs </a> <ul class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink"> <li><a class="dropdown-item" href="#">Bulldog</a></li> <li><a class="dropdown-item" href="#">Al</a></li> <li><a class="dropdown-item" href="#">Labrador</a></li> <li class="dropdown-submenu"><a class="dropdown-item dropdown-toggle" href="#">Puppies</a> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Husky</a></li> <li><a class="dropdown-item" href="#">Husky B</a></li> <li><a class="dropdown-item" href="#">Husky C</a></li> </ul> </li> <li class="dropdown-submenu"><a class="dropdown-item dropdown-toggle" href="#">Pet Products</a> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Cat</a></li> <li><a class="dropdown-item" href="#">Dogs</a></li> <li><a class="dropdown-item" href="#">Reptile</a></li> <li><a class="dropdown-item" href="#">Amphibian</a></li> </ul> </li> </ul> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" role="button" data-bs-toggle="dropdown" aria-expanded="false"> Pet Cages </a> <ul class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink"> <li><a class="dropdown-item" href="#">Cat</a></li> <li><a class="dropdown-item" href="#">Dogs</a></li> <li><a class="dropdown-item" href="#">Reptile</a></li> </ul> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" role="button" data-bs-toggle="dropdown" aria-expanded="false"> Pet Guides </a> <ul class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink"> <li><a class="dropdown-item" href="#">Labrador</a></li> <li><a class="dropdown-item" href="#">Cat</a></li> <li><a class="dropdown-item" href="#">Lizard</a></li> </ul> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" role="button" data-bs-toggle="dropdown" aria-expanded="false"> ML & AI </a> <ul class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink"> <li><a class="dropdown-item" href="#">Pet CBD</a></li> </ul> </li> <!-- <form class="d-flex"> --> <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"> <!-- <button class="btn btn-outline-success" type="submit">Search</button> --> <!-- </form> --> </ul> </div> </div> </nav>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM