【问题标题】:Dropdown inside dropdown下拉菜单内的下拉菜单
【发布时间】:2018-01-27 05:08:28
【问题描述】:

我有一个导航栏,其中有一个名为 A 的主下拉 li 标签,然后当我显示下拉菜单时,它会显示 A-1 和 A-2 选项,A-2 它是另一个带有其他选项的下拉菜单,我尝试复制相同的代码,例如如果是主下拉列表但不能正常工作,我的代码是正确的here

但是下面是代码。

$(document).ready(function () {
  console.log("Hi...");

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>

<nav class="navbar navbar-default navbar-static-top" id="Nav">
        <div class="container-fluid">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
                    <span class="sr-only">Toggle navigation</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                <a class="navbar-brand" href="#">APBPV</a>
            </div>
            <div id="navbar" class="navbar-collapse collapse">
                <ul class="nav navbar-nav">
                    <li class="dropdown">
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">A <span class="caret"></span></a>
                        <ul class="dropdown-menu">
                            <li><a href="#">A-1</a></li>
                            <li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">A-2<b class="caret"></b></a>
                                <ul class="dropdown-menu">
                                    <li><a href="#">A-2-1</a></li>
                                    <li><a href="#">A-2-2</a></li>
                                </ul>
                            </li>
                        </ul>
                    </li>
                </ul>
            </div>
        </div>
    </nav>

【问题讨论】:

    标签: javascript html twitter-bootstrap twitter-bootstrap-3 drop-down-menu


    【解决方案1】:

    你需要一些 javascript 才能工作:

    $(document).ready(function(){
      $('a.dropdown-toggle').on("click", function(e){
        $(this).closest('li').toggleClass('open');
        e.stopPropagation();
        e.preventDefault();
      });
    });
    

    以下是对上述代码的解释:
    一旦您单击具有下拉切换类的锚点(这意味着 - 它是一个应该打开下一个下拉菜单的锚点) - 在上面的 li 元素上设置类 open (它告诉下一个-菜单打开)并阻止当前元素的默认行为。

    $(document).ready(function(){
      $('a.dropdown-toggle').on("click", function(e){
        $(this).closest('li').toggleClass('open');
        e.stopPropagation();
        e.preventDefault();
      });
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
    
    <nav class="navbar navbar-default navbar-static-top" id="Nav">
            <div class="container-fluid">
                <div class="navbar-header">
                    <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
                        <span class="sr-only">Toggle navigation</span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                    </button>
                    <a class="navbar-brand" href="#">APBPV</a>
                </div>
                <div id="navbar" class="navbar-collapse collapse">
                    <ul class="nav navbar-nav">
                        <li class="dropdown">
                            <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">A <span class="caret"></span></a>
                            <ul class="dropdown-menu">
                                <li><a href="#">A-1</a></li>
                                <li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">A-2<b class="caret"></b></a>
                                    <ul class="dropdown-menu">
                                        <li><a href="#">A-2-1</a></li>
                                        <li><a href="#">A-2-2</a></li>
                                    </ul>
                                </li>
                            </ul>
                        </li>
                    </ul>
                </div>
            </div>
        </nav>

    【讨论】:

    • 欢迎您 :) 如果您有兴趣,我刚刚添加了有关此代码的说明。
    • 只有一件事...如果我有更多的主要 li 标签,如 A-1,如果我打开一个然后其他两个都打开,有没有办法隐藏第一个?
    • 提供一个解决问题的jsfiddle,我会尽力为你解决。
    猜你喜欢
    • 1970-01-01
    • 2015-08-08
    • 2012-07-05
    • 1970-01-01
    • 2019-12-05
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    • 2012-01-14
    相关资源
    最近更新 更多