我有一个bootstrap 4下拉按钮,并且该按钮本身具有一个点击侦听器。当我单击下拉按钮打开菜单时,第一次单击按钮onclick处理程序。然后菜单打开正常,如果我在菜单外部单击,则菜单会关闭,因为引导下拉菜单的默认行为。
但是从那时起,如果我再次单击按钮以打开菜单,此后onclick处理程序按钮将不会被点击。 我需要添加此处理程序,以便在每次打开菜单之前都可以在下拉菜单项中设置一些值,然后将其显示。
这个js小提琴代表了这个问题 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>