首页 > 解决方案 > 下拉菜单按钮[非下拉菜单]第一次后不会触发点击事件

问题描述

我有一个 bootstrap 4 下拉按钮,并且我有一个点击监听器附加到该按钮本身。当我单击下拉按钮打开菜单时,第一次按钮 onclick 处理程序被击中。然后菜单打开正常,如果我在菜单外部单击,则作为引导下拉菜单的默认行为关闭。

但是从那时起,如果我再次单击按钮以打开菜单,则按钮 onclick 处理程序之后不会被击中。我需要添加这个处理程序,以便在每次打开菜单之前我可以在下拉菜单项中设置一些值,然后显示它。

这个 js fiddle 代表问题 Link to JS Bin

如何解决这个问题。这是事件冒泡的问题吗?有什么办法可以克服吗?

$(document).on('click', '.MainButton', function(e){
  alert("opening dropdown");
})
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous">

  <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js" integrity="sha384-wHAiFfRlMFy6i5SRaxvfOCifBUQy1xHdJ/yoi7FRNXMRBu5WHdZYu1hA6ZOblgut" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js" integrity="sha384-B0UglyR+jN6CkvvICOB2joaf5I4l3gm9GU6Hc1og6Ls7i6U/mkkaduKaBhlAXv9k" crossorigin="anonymous"></script>
</head>
<body>
  <div >
    <ul class="navbar-nav mr-auto">
      <li class="nav-item dropdown">
        <a class="nav-link dropdown-toggle MainButton" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
          Dropdown
        </a>
        <div class="dropdown-menu" aria-labelledby="navbarDropdown">
          <a class="dropdown-item" href="#">11111111</a>
          <a class="dropdown-item" href="#">22222222</a>
          <a class="dropdown-item" href="#">33333333</a>
        </div>
      </li>
    </ul>
  </div>
</nav>
  
  
</body>
</html>

标签: javascripttwitter-bootstrapbootstrap-4drop-down-menudropdown

解决方案


推荐阅读