简体   繁体   English

切换下一个列表时如何关闭切换

[英]How to close toggle when next list is toggled

This is a multi-child dropdown menu, Actually I am trying to toggle a menu one at a time (ie only selected menu will show other should close).这是一个多子下拉菜单,实际上我正在尝试一次切换一个菜单(即只有选定的菜单会显示其他应该关闭的菜单)。

Here is my code这是我的代码

HTML HTML

<div class="collapse navbar-collapse pull-left" id="navbar-collapse">
    <ul class="nav navbar-nav">
        <li class="nav-item dropdown">
            <a class="nav-link dropdown-toggle" href="#" data-toggle="dropdown">Master<span class="caret"></span></a>
            <ul class="dropdown-menu">
                <li class="dropdown-submenu">
                    <a class="test" tabindex="-1" href="#">MENU-A<span class="caret"></span></a>
                    <ul class="dropdown-menu">
                        <li><a tabindex="-1" href="#">A1-CHILD</a></li>
                        <li><a tabindex="-1" href="#">A2-CHILD</a></li>
                    </ul>
                </li>
                <li class="dropdown-submenu">
                    <a class="test" tabindex="-1" href="#">MENU-B<span class="caret"></span></a>
                    <ul class="dropdown-menu">
                        <li><a tabindex="-1" href="#">B1-CHILD</a></li>
                        <li><a tabindex="-1" href="#">B2CHILD</a></li>
                    </ul>
                </li>
                <li class="dropdown-submenu">
                    <a class="test" tabindex="-1" href="#">MENU-C <span class="caret"></span></a>
                    <ul class="dropdown-menu">
                        <li class="dropdown-submenu">
                            <a class="test" href="#">C1-CHILD <span class="caret"></span></a>
                            <ul class="dropdown-menu">
                                <li><a href="/supplier/create">C1-A</a></li>
                                <li><a href="/supplier/index">C1-B</a></li>
                            </ul>
                        </li>
                        <li class="dropdown-submenu">
                            <a class="test" href="#">C2-CHILD <span class="caret"></span></a>
                            <ul class="dropdown-menu">
                                <li><a href="/weight-balance-map/create">C2-A</a></li>
                                <li><a href="/weight-balance-map/create">C2-B</a></li>
                            </ul>
                        </li>
                    </ul>
                </li>
            </ul>
        </li>
    </ul>
</div>

JS : JS

$(document).ready(function{
  $(".dropdown-submenu a.test").on("click", function(e){
    $(this).next("ul").toggle();
    e.stopPropagation();
    e.preventDefault();
  });
});

CSS: CSS:

.dropdown-submenu {
  position: relative;
}

.dropdown-submenu .dropdown-menu {
  top: 0;
  left: 100%;
  margin-top: -1px;
}

This didn't close after another menu toggles and the third level of submenu didn't flexible for the first answer.这在另一个菜单切换后并没有关闭,并且第三级子菜单对于第一个答案并不灵活。 thanks,谢谢,

You need to get closest ul where click event has occur then using .not() exclude it from hiding and then simply use next("ul").toggle();您需要在发生点击事件的地方获得closest ul,然后使用.not()将其从隐藏中排除,然后只需使用next("ul").toggle(); to show dropdown menu.显示下拉菜单。

Demo code :演示代码

 $(document).ready(function() { $(".dropdown-submenu a.test").on("click", function(e) { //get closest `li`-> ul var selector = $(this).closest(".dropdown-submenu").find("ul"); //hid all other li and ul $(".dropdown-submenu ul").not(selector).not(this.closest('ul')).hide() $(this).next("ul").toggle(); //show this a-> next ul e.stopPropagation(); e.preventDefault(); }); });
 .dropdown-submenu { position: relative; }.dropdown-submenu.dropdown-menu { top: 0; left: 100%; margin-top: -1px; display: none; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="collapse navbar-collapse pull-left" id="navbar-collapse"> <ul class="nav navbar-nav"> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="#" data-toggle="dropdown">Master<span class="caret"></span></a> <ul class="dropdown-menu"> <li class="dropdown-submenu"> <a class="test" tabindex="-1" href="#">MENU-A<span class="caret"></span></a> <ul class="dropdown-menu"> <li><a tabindex="-1" href="#">A1-CHILD</a></li> <li><a tabindex="-1" href="#">A2-CHILD</a></li> </ul> </li> <li class="dropdown-submenu"> <a class="test" tabindex="-1" href="#">MENU-B<span class="caret"></span></a> <ul class="dropdown-menu"> <li><a tabindex="-1" href="#">B1-CHILD</a></li> <li><a tabindex="-1" href="#">B2CHILD</a></li> </ul> </li> <li class="dropdown-submenu"> <a class="test" tabindex="-1" href="#">MENU-C <span class="caret"></span></a> <ul class="dropdown-menu"> <li class="dropdown-submenu"> <a class="test" href="#">C1-CHILD <span class="caret"></span></a> <ul class="dropdown-menu"> <li><a href="/supplier/create">C1-A</a></li> <li><a href="/supplier/index">C1-B</a></li> </ul> </li> <li class="dropdown-submenu"> <a class="test" href="#">C2-CHILD <span class="caret"></span></a> <ul class="dropdown-menu"> <li><a href="/weight-balance-map/create">C2-A</a></li> <li><a href="/weight-balance-map/create">C2-B</a></li> </ul> </li> </ul> </li> </ul> </li> </ul> </div>

暂无
暂无

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

相关问题 如何在单击时在两个菜单项之间切换并在切换下一个时关闭上一个? - How to toggle between two menu items on click and close previous when next is toggled? jQuery-如何在尝试切换另一个div时关闭由h2元素切换的div? - jQuery- How to close div that is toggled by h2 elements when trying to toggle another div? 使用jquery切换时如何更改活动切换锚点的样式? - How to change style of active toggled anchor when using jquery toggle? 我想将切换状态存储在Cookie中,并且还想在单击下一个列表时关闭上一个列表 - i want to store toggle state in cookie and also want to close previous list when next list is clicked jQuery-在jPanelMenu上,单击外部的任何菜单时如何关闭切换的子菜单? - jQuery - on jPanelMenu how to close toggled submenu when clicking anywhere outside of it? jQuery:切换任何其他下拉菜单 - jQuery: Toggle other dropdowns when any is toggled 当其他下拉菜单处于活动状态时关闭下拉菜单 - Close Dropdown when other Dropdown is toggled active 使用切换类时如何仅使一个div一次切换? - How to only make one div has toggled at one time when using toggle class? 当我们通过点击事件切换另一个班级时,如何删除以前切换的班级 - How to remove a previously toggled class when we toggle another class by click event 当所有“子”div都被切换(过滤为无结果)时,如何切换“父”div? - How to toggle the "parent" div when all "child" div are toggled (filtered as no result)?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM