2013-07-15 197 views
2

根据下面的HTML,我在导航ul元素中有一个Bootstrap(版本2.3.2)下拉菜单。当我点击IE中的下拉菜单中的项目时,下拉列表关闭 - 这似乎是正确的行为 - 并且当然是我想要的。在Firefox,Chrome和Safari中,下拉列表不会关闭。Bootstrap Dropdown不能关闭项目点击

<nav class="navbar navbar-fixed-top"> 
    <div class="navbar-inner"> 
     <a class="brand" href="/"> 
      <span class="title">Doc Assembler</span> 
     </a> 

     <div class="loader pull-left" data-bind="css: { active: showLoader }"> 
      <i class ="icon-spinner icon-2x icon-spin" ></i> 
     </div> 

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

     <div class="nav-collapse collapse"> 
      <ul class="nav" data-bind="foreach: navRoutes"> 
       <li><a data-bind="css: { active: isActive() }, attr: { href: hash }, text: name"></a></li> 
      </ul> 

      <ul class="nav"> 
       <li class="dropdown"> 
        <a class="dropdown-toggle" data-toggle="dropdown" href="#"> 
         <i class="icon-cogs"/> Admin<b class="caret"></b> 
        </a> 
        <ul class="dropdown-menu pull-right"> 
         <!-- ko foreach: adminRoutes --> 
         <li><a data-bind="attr: { href: hash }, html: caption"></a> 
         <!-- /ko --> 
        </ul> 
       </li> 
       <li><a data-bind="click: logOff" href="#"><i class="icon-signout"/> Log Off</a></li> 
      </ul> 
     </div> 
    </div> 
</nav> 

我可以看到,从引导的clearMenus方法被调用IE浏览器中,而不是在其他浏览器中单击某个项目时。菜单打开时,clearMenus会在所有浏览器中调用。我认为它可能有一些东西要引导做用下面的代码:

$(document) 
    .on('click.dropdown.data-api', clearMenus) 
    .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) 

我知道在引导的早期版本中出现了一些问题,这一点,但是我一直没能找到任何细节中类似的问题当前版本。

回答

1

我在Durandal中使用Router插件。我通过将以下代码行添加到router.js的completeNavigation方法中来解决此问题:

$('li[class="dropdown open"]').removeClass('open');