2013-02-06 114 views
1

我在导航栏上有一个Twitter Bootstrap下拉菜单,当我点击它并且上/下光标键正常工作时,它会正确打开。

但是,如果我在keydown或keyup事件处理程序中使用: $('#menu').dropdown('toggle');打开相同的菜单,菜单将正确打开/关闭,但上/下光标键不起作用。实际上下拉菜单​​事件不会触发。

下面是HTML和Javascript:

<ul class="nav"> <!-- "KB Menu" --> 
    <li class="dropdown kb_menu hideit"> 
     <a href="#" class="dropdown-toggle" data-toggle="dropdown">Knowledge Bases<b class="caret"></b></a> 
     <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel" id="kb_menu"> 
     </ul> 
    </li> 
</ul> 


$(document).on('keydown', function(event){ 
    if (event.ctrlKey){ 
     if (event.keyCode == 191){ // Ctrl+/ = 191 
      $('#kb_menu').dropdown('toggle'); 
     } 
    } 
}); 

我已经试过所有我能想到无济于事为止。

+0

请你发布你正在使用的代码? –

+0

@AdamTaylor,完成 – nevf

回答

1

添加以下行$('#kb_menu').dropdown('toggle')后:

$('#kb_menu').find('li:first > a').focus(); 
+0

神奇的是,解决了这个问题。我试过'''$('#kb_menu')。focus()'''无济于事。 TBS切换功能也调用焦点(),但显然鼠标点击发挥作用。看起来像dropdown.toggle()应该执行'''$('#kb_menu')。find('li:first> a')。focus();'''第一个菜单项,而点击不。无论如何非常感谢。 – nevf

+0

奇怪的是,没有为我工作...... –

+0

添加类“open”也有窍门。在你的情况'$(“#kb_menu”)。addClass(“open”)' –