【问题标题】:Drop down menu won't close on second click/touch下拉菜单不会在第二次点击/触摸时关闭
【发布时间】:2020-08-27 06:36:53
【问题描述】:

我正在使用在线引导模板,但我发现进入较小尺寸的屏幕时,下拉(商店)不会在第二次单击时关闭我该怎么办?这是代码。

$('nav .dropdown').hover( function(e) {
        e.stopPropagation(); 
        $('.dropdown-menu', this).stop( true, true ).fadeIn("fast");
        $(this).toggleClass('open');
        $('b', this).toggleClass("caret caret-up");                
    },
    function(e) {
        e.stopPropagation(); 
        $('.dropdown-menu', this).stop( true, true ).fadeOut("fast");
        $(this).toggleClass('open');
        $('b', this).toggleClass("caret caret-up");                
    });


    $('#dropdown04').on('show.bs.dropdown', function (e) {
        console.log('show');
    });

    $('.dropdown a').on('click', function (event) {
        e.stopPropagation(); 
    });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<nav class="navbar navbar-expand-lg navbar-dark ftco_navbar bg-dark ftco-navbar-light" id="ftco-navbar">
        <div class="container">
          <a class="navbar-brand" href="index.html">Vegefoods</a>
          <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#ftco-nav" aria-controls="ftco-nav" aria-expanded="false" aria-label="Toggle navigation">
            <span class="oi oi-menu"></span> Menu
          </button>

          <div class="collapse navbar-collapse" id="ftco-nav">
            <ul class="navbar-nav ml-auto">
              <li class="nav-item active"><a href="index.html" class="nav-link">Home</a></li>
              <li class="nav-item dropdown">
              <a class="nav-link dropdown-toggle" href="#" id="dropdown04" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Shop</a>
              <div class="dropdown-menu" aria-labelledby="dropdown04">
                <a class="dropdown-item" href="shop.html">Shop</a>
                <a class="dropdown-item" href="cart.html">Cart</a>
                <a class="dropdown-item" href="checkout.html">Checkout</a>
              </div>
            </li>
              <li class="nav-item"><a href="about.html" class="nav-link">About</a></li>
              <li class="nav-item"><a href="contact.html" class="nav-link">Contact</a></li>
              <li class="nav-item cta cta-colored"><a href="cart.html" class="nav-link"><span class="icon-shopping_cart"></span>[0]</a></li>

            </ul>
          </div>
        </div>
      </nav>
    <!-- END nav -->

感谢您的帮助。

【问题讨论】:

    标签: html jquery css bootstrap-4


    【解决方案1】:

    删除属性data-toggle="dropdown" 然后,首先像这样处理单击以打开/关闭下拉列表;

    $('a.dropdown').on('click', function () {
     $(this).parent().toggleClass('open'); 
    });
    

    然后等待下拉菜单之外的点击关闭它;

    $('a.dropdown').on('click', function () {
     $(this).parent().toggleClass('open'); 
    });
    

    【讨论】:

    • 我尝试这种方式兄弟,但当我点击商店时它不起作用它会打开下拉菜单但同时它会关闭菜单
    • 你能试试 event.stopPropagation() 方法吗,这里是示例链接; w3schools.com/jquery/….
    • 这个样本更好; geeksforgeeks.org/…
    • 不知道为什么只使用 e.stopPropagation 但这不是我想要的
    • 我想要的是当我再次点击下拉菜单时能够关闭它
    猜你喜欢
    • 1970-01-01
    • 2012-10-16
    • 2015-11-25
    • 2020-11-24
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    • 2015-08-16
    • 1970-01-01
    相关资源
    最近更新 更多