我正在使用Bootstrap下拉菜单。问题是它在第一次点击时永远不会下降;我需要点击2次才能切换。我想点击事件在传播之前会以某种方式卡在某处......
有没有办法解决这个问题?
答案 0 :(得分:74)
如果某人使用带有ui-bootstrap
模块的角度以及正常的引导程序HTML下拉列表定义,则还需要两次点击。
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>
[...]
</li>
=&GT;删除data-toggle="dropdown"
将解决问题。
在此之后单击打开下拉列表即可。
答案 1 :(得分:26)
在Bootstrap 4中,bootstrap.min.js
和bootstrap.bundle.min.js
现在在下拉列表中发生冲突。
删除bootstrap.min.js
后,下拉双击问题将得到解决。
答案 2 :(得分:7)
这是因为其下拉菜单的Twitter Bootstrap语法包含href
标记。您需要preventDefault
和stopPropagation
来防止这种情况发生。这样的事情可以解决问题:
$('.dropdown-toggle').click(function(e) {
e.preventDefault();
e.stopPropagation();
return false;
});
答案 3 :(得分:5)
如果您的项目中两次包含Bootstrap,则可能会发生这种情况。
如果bootstrap.min.js和bootstrap.bundle.min.js(bootstrap和popper js)都包含在项目中,则意味着冗余的bootstrap js。
js组合应如下所示: 要么:仅bootstrap.bundle.min.js 或者:bootstrap.min.js和popper.min.js 有关详细信息,请访问https://getbootstrap.com/docs/4.1/getting-started/contents/
答案 4 :(得分:3)
就我而言,其他答案无效。
在application.js
中,我有:
//= require popper.min
//= require bootstrap-sprockets
卸下引导链轮可以解决此问题。
答案 5 :(得分:3)
如果使用bootstrap4,请删除bootstrap.bundle.min.js。 我有同样的问题,并且已经解决
答案 6 :(得分:2)
在BootStrap 4中,不应同时包含“ bootstrap.bundle.min.js”和“ bootstrap.min.js”。这将导致DropDown问题。仅保留“ bootstrap.bundle.min.js”,因为它将具有所有必需的代码。
答案 7 :(得分:1)
通过查看angular.ui.bootstrap和native bootstrap.js的源代码,他们有两个处理程序用于下拉列表。
建议的解决方案: adjust angular.ui.bootstrap dropdownToggle 指令仅限制为“A”属性。 因此,通过解决此问题,您需要修改dropdownToggle将“CA”限制为“A”,这将隐藏已经由bootstrap.js处理的angular.ui.bootstrap中的Class looker
对于angular.ui.bootstrap的缩小版本,请查找此行 指令( “dropdownToggle”,函数(){返回{限制:的 “CA”下,要求: “^下拉”,链接:功能(A,B,C,d){
将“CA”替换为“A”。
干杯
答案 8 :(得分:1)
我在https://stackoverflow.com/a/27278529/1673289遇到了与jaybro相同的问题,但他们的解决方案并没有帮助。
解决这两种情况的方法是添加:
data-disabled="true"
到具有data-toggle="dropdown"
属性的元素上。
答案 9 :(得分:1)
如果您有多个bootstrap.js文件,也可能会发生这种情况!检查您是否还有旧版本,然后删除该脚本。
答案 10 :(得分:1)
我通过删除指向bootstrap.bundle.js的链接并添加了指向popper.js的链接来解决了这个问题
之前
<script src="bootstrap/jquery/jquery.js"></script>
<script src="bootstrap/js/bootstrap.bundle.js"></script>
<script src="bootstrap/js/bootstrap.js"></script>
之后
<script src="bootstrap/jquery/jquery.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
<script src="bootstrap/js/bootstrap.js"></script>
请注意,我下载了引导程序文件并将其存储在名为“ bootstrap”的目录中。在其中,我有三个不同的目录“ css”,“ js”,“ jquery”。
答案 11 :(得分:0)
我发现在某些页面上我必须双击,其他页面单击。
删除data-toggle="dropdown"
会使双击成为单曲并打破单曲。
我比较了dev工具中的html(因为提供了相同的html),并且在我的双击页面上找到了带有数据切换的div,如下所示:
<div id="notifications" data-toggle="dropdown" class="dropdown-toggle"
aria-haspopup="true" aria-expanded="false">
但是单击html看起来像这样:
<div id="notifications" data-toggle="dropdown" class="dropdown-toggle">
所以,在准备好的文档中,我使用了attr检测和防止默认答案,它使我的双击打开进入单击打开:
if (!($('#notifications').attr('aria-haspopup') == undefined &&
$('#notifications').attr('aria-expanded') == undefined))
{
$('.dropdown-toggle').click(function (e) { return false; });
}
答案 12 :(得分:0)
就像@ rajaneesh-singh在上面告诉我们的那样,此错误是在两次包含Bootstrap时发生的。
在我的情况下,我在官方引导程序和Twitter版本中有一个副本:
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.1/js/bootstrap.js"></script>
我刚刚删除了Twitter版本,现在一切正常。
答案 13 :(得分:0)
我最近遇到了同一问题,我通过编写自定义脚本解决了该问题:
Playing Harry Potter: Essays and Interviews on Fandom and ...