Bootstrap nav-collapse链接无法在移动设备上运行

时间:2013-07-16 14:01:44

标签: javascript mobile twitter-bootstrap responsive-design hyperlink

我遇到的问题是关于下载菜单无法在移动设备上工作一周我一直在努力。我从引导站点获取了当前示例的副本,对其进行了一些修改,在测试期间我注意到它没有按预期工作。 (同样适用于原始示例(http://twitter.github.io/bootstrap/examples/carousel.html),其中我只添加链接到例如google) - 为什么会出现这种情况?

<div class="navbar navbar-inverse navbar-fixed-top">
  <div class="navbar-inner">
    <div class="container">
      <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="brand" href="#">Dropdown test</a>
      <div class="nav-collapse collapse">
        <ul class="nav">
          <li class="dropdown">
            <a href="#" class="dropdown-toggle" data-toggle="dropdown" data-target="#">Links<span class="caret"></span></a>       
            <ul class="dropdown-menu">
              <li><a href="http://www.google.com" target="blank">Google (opens in new window)</a></li>
              <li><a href="http://www.bing.com" target="blank">Bing (opens in new window)</a></li>
              <li><a class="linkcheck" href="http://www.google.com">Google</a></li>
              <li><a class="linkcheck" href="http://www.bing.com">Bing</a></li>
            </ul>
          </li><!-- .dropdown -->
        </ul><!-- .nav -->
      </div><!-- .nav-collapse -->
    </div><!-- .container -->
  </div><!-- .navbar-inner -->
</div><!-- .navbar -->

Bootstrap对我来说是新手,我找不到有关nav-collapse的任何文档,我在哪里可以找到它? 我真的要做一个点击事件,然后是window.open(url)吗? (或onclick在移动设备上的行为是否有所不同?)

以下是我的在线示例:http://test-web.dk/sandbox/bootstrap/

编辑: 找到了解决方案:

$('.linkcheck', this).click(function(){
  var url = $(this).attr('href');
  alert("link clicked:" + url);
  if(url.match(/^http:/)) {
    window.location.href = url;
  }
});

// fix by RobDodson: github.com/twitter/bootstrap/issues/4550
// Kills regular links in browsers though, but they will be redirected by linkcheck above
$('.dropdown a').click(function(e) {
  e.preventDefault();
  setTimeout($.proxy(function() {
    if ('ontouchstart' in document.documentElement) {
      $(this).siblings('.dropdown-backdrop').off().remove();
    }
  }, this), 0);
});

仍然,一个真正的自举解决方案很高兴知道,而不是黑客:-)因此,如果有人有建议,请发布。

1 个答案:

答案 0 :(得分:2)

检查您是否使用了最新的jQuery。

我对Drupal的Bootstrap主题有同样的问题,但是通过将jQuery Update中的设置更改为最新版本来解决这个问题!