2

我在测试页面中尝试了这个,它工作正常。

<div class="btn-group">
  <button type="button" class="btn btn-danger dropdown-toggle" data-toggle="dropdown">
    Action <span class="caret"></span>
  </button>
  <ul class="dropdown-menu" role="menu">
    <li><a href="#">Action</a></li>
    <li><a href="#">Another action</a></li>
    <li><a href="#">Something else here</a></li>
    <li class="divider"></li>
     <li><a href="#">Separated link</a></li>
  </ul>
</div>

单击任何下拉菜单项时,下拉菜单将关闭。

但是,当我将其复制到 HotTowel 项目中的 nav.html 时:

<div class="btn-group">
   <a class="btn btn-info" href="#">Home</a>
    <a class="btn btn-info" href="#/details">Details</a>
        <button type="button" class="btn btn-info dropdown-toggle" data-toggle="dropdown">
            Odd Pages <span class="caret"></span>
        </button>
        <ul class="dropdown-menu pull-right" role="menu">
            <li><a href="#/page1">Page 1</a></li>
            <li><a href="#/page3">Page 3</a></li>
            <li><a href="#/page5">Page 5</a></li>
            <li class="divider"></li>
            <li><a href="#">Page 9</a></li>
        </ul>
</div>

在我单击网页上的某个位置之前,下拉菜单不会关闭。

怎么了?

4

2 回答 2

2

必须有其他一些 javascript 阻止下拉菜单关闭。这是您发布的确切代码的 JSFiddle,它工作得很好。

<div class="btn-group">
  <a class="btn btn-info" href="#">Home</a>
  <a class="btn btn-info" href="#/details">Details</a>
  <button type="button" class="btn btn-info dropdown-toggle" data-toggle="dropdown">
     Odd Pages <span class="caret"></span>
   </button>
   <ul class="dropdown-menu pull-right" role="menu">
     <li><a href="#/page1">Page 1</a></li>
     <li><a href="#/page3">Page 3</a></li>
     <li><a href="#/page5">Page 5</a></li>
     <li class="divider"></li>
     <li><a href="#">Page 9</a></li>
   </ul>
</div>

下拉式菜单

尝试消除任何其他可能与 bootstrap/jQuery js 冲突的 javascript。

于 2013-09-07T18:27:37.473 回答
1

我有同样的问题,显然当使用 durandal 路线时,单击项目后下拉菜单不会关闭。示例 'SPAJumpStart' 解决方案的行为相同。John Papa 通过绑定 click 事件而不是 href 来“修复”此问题。最后,我在 shell.js 的 viewAttached 函数中添加了以下代码:

        $('ul.dropdown-menu', view).find('li').click(function () {
            // remove the 'open' class on the parent element 
            $(this).parents('.dropdown-menu').parent().removeClass('open');
        });
于 2013-09-25T13:42:44.777 回答