16

最新版本的 twitter bootstrap (2.3.2) 似乎确实存在移动设备上的下拉菜单的问题。

当您在打开菜单后单击下拉菜单项时,菜单只会关闭并且不会单击任何链接。你可以在他们的示例页面上看到这个:http: //twitter.github.io/bootstrap/examples/hero.html

我在他们的 github 页面上发现了一个问题,但没有解决方案:https ://github.com/twitter/bootstrap/issues/7927

有人知道修复它的技巧吗?

4

7 回答 7

39

临时解决方法是添加

.dropdown-backdrop{
    position: static;
}

到 css 文件。

于 2013-07-13T17:32:26.140 回答
11

这对我有用:

$('.dropdown-toggle').click(function(e) {
  e.preventDefault();
  setTimeout($.proxy(function() {
    if ('ontouchstart' in document.documentElement) {
      $(this).siblings('.dropdown-backdrop').off().remove();
    }
  }, this), 0);
});

通过github上的robdodson

于 2013-11-11T19:40:02.440 回答
4

对我来说,它增加了我的风格:

.dropdown-backdrop {
    z-index:0;
}

与马蒂亚斯几乎相同的答案,我希望它有所帮助。

于 2014-10-15T07:19:56.920 回答
0

我已经解决了这个问题。

我的代码在这里

   <li class="dropdown custom open"> <a href="#" class="dropdown-toggle" data-toggle="dropdown"> menu<b class="caret"></b></a>
             <ul class="dropdown-menu">
                 <li><a href="#">Sub menu</a></li>
                 <li><a href="#">Sub menu2</a></li>
              </ul>
           </li>

在您的 CSS 文件中添加以下样式。

@media (max-width: 767px) { 
.dropdown.custom:hover .dropdown-menu {
  visibility: visible;
  display:block;
  border-radius:0;

}
}

访问:http ://www.s4auto.co.za/

于 2014-01-01T06:14:47.890 回答
0

尝试这个。这对我有用

 @media only screen and (max-width: 768px) {
    .dropdown-menu {
        position: absolute;
    }
 }
于 2019-10-31T08:24:34.467 回答
0

通常的答案似乎都无法解决我们在 Android 上的问题。我们在这里尝试了公认的答案以及一些 javascript hack: Bootstrap Collapsed Menu Links Not Working on Mobile Deviceshttp://alittlecode.com/fix-twitter-bootstraps-dropdown-menus-in-touch-screens/

最终,我们发现了关闭发生的位置,并且clearMenus()只有在链接父级或祖父级没有dropdown-submenu类的情况下才会有条件地调用

$(document)
.on('click.dropdown.data-api', function (e) {

    //fix start        
    var $parent = $(e.target).parent()
    var $grandparent = $parent.parent()

    if (!$parent.hasClass('dropdown-submenu') && !$grandparent.hasClass('dropdown-submenu')) {        
        clearMenus()
    }

    //clearMenus

    //end fix
})
.on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
.on('click.dropdown.data-api'  , toggle, Dropdown.prototype.toggle)
.on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)

}(window.jQuery);

希望有帮助!

于 2016-10-07T15:54:11.580 回答
-1
$('.dropdown a').click(function(e) {
      e.preventDefault();
      setTimeout($.proxy(function() {
        if ('ontouchstart' in document.documentElement) {
          $(this).siblings('.dropdown-backdrop ').off().remove();
        }
      }, this), 0);

    }); 
于 2018-10-08T07:33:16.187 回答