下拉菜单不会关闭

时间:2013-09-07 14:10:23

标签: twitter-bootstrap durandal hottowel

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

<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>

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

有什么问题?

2 个答案:

答案 0 :(得分:1)

必须有其他一些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>

Dropdown Menu

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

答案 1 :(得分: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');
        });