【发布时间】:2015-08-20 07:29:28
【问题描述】:
我有一个下拉按钮,其中包含锚定到页面不同部分的内容列表。此下拉菜单仅适用于移动设备。
但是问题是,我单击下拉菜单后不会关闭它。无论如何我可以让它在点击时关闭吗?我试过环顾四周,但它对我的不起作用。
<div id="mobile-dropdown" class="nav2 w" data-spy="affix" data-offset-top="350">
<div class="container">
<div class="pull-left" style="margin-top:3px; margin-right:3px;">Jump to </div>
<div class="pull-left">
<div class="btn-group mob-fl">
<button type="button" class="btn btn-default btn-sm dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
Categories
<span class="caret"></span>
</button>
<ul class="dropdown-menu" role="menu">
<li><a href="#1">One</a></li>
<li><a href="#2">Two</a></li>
<li><a href="#3">Three</a></li>
<li><a href="#4">Four</a></li>
</ul>
</div>
</div>
</div>
</div>
我也看了一下bootstrap的js本身,发现了这一行:
if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
// if mobile we use a backdrop because click events don't delegate
$('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus)
}
这就是它不会关闭的原因吗?有什么解决方法可以让它工作吗?
编辑:
所以在一些帮助下我得到了这个脚本:
$('document').ready(function() {
$("a.dropdown-toggle").click(function(ev) {
$("a.dropdown-toggle").dropdown("toggle");
return false;
});
$("ul.dropdown-menu a").click(function(ev) {
$("a.dropdown-toggle").dropdown("toggle");
return false;
});
});
我的 javascript 很弱,我如何实际编辑它以使其仅在我的“mobile-dropdown”id div 中工作。
到目前为止,我已经将我的脚本更新为:
$('document').ready(function() {
$("#subject_cat_mob .dropdown-toggle").click(function(ev) {
$("#subject_cat_mob .dropdown-toggle").dropdown("toggle");
return false;
});
$("#subject_cat_mob ul.dropdown-menu a").click(function(ev) {
$("#subject_cat_mob .dropdown-toggle").dropdown("toggle");
return false;
});
});
它就像我想要的那样工作。但第一次后下拉菜单不会再次打开。
【问题讨论】:
-
看这个evanp的帖子可能对你有帮助gist.github.com/evanp/6456479
-
不错!谢谢它的作品!但它正在影响我的导航栏的下拉菜单。有没有办法只为这个下拉按钮指定小脚本?
-
尝试用 css 修复。
-
我确实尝试添加一个新的类名,因为更改下拉切换名称会影响下拉菜单。但整个事情不再起作用了
标签: javascript jquery html twitter-bootstrap