2010-02-03 100 views
1

我使用流行的hoverIntent jQuery插件下拉大型菜单。jQuery的hoverIntent和键盘触发焦点

http://cherne.net/brian/resources/jquery.hoverIntent.html

我附加了它列出的项目:

$myMenuOfLIs 
    .hoverIntent(megaConfig) 

此工程按预期:如果我将鼠标放在李,hoverIntent被触发,显示菜单。

每个LI也有一个锚标记(链接)。我希望能够在链接(焦点)上添加人员标签,然后触发菜单。这是为了使菜单通过键盘工作。

我已经试过各种设置,但没有一个似乎工作:

$myMenuOfLIs 
    .hoverIntent(megaConfig) 
    .find('a:first') 
     .hoverIntent(megaConfig) 

 

$myMenuOfLIs 
    .hoverIntent(megaConfig) 
    .find('a:first') 
     .hover() 

即使这个烂摊子:

$myMenuOfLIs 
    .hoverIntent(megaConfig) 
    .find('a:first') 
     .focus(function(){ 
      $(this).parent().hover(function(){ 
       $(this).hoverIntent(megaConfig) 
      }) 
     }) 

有没有人使用hoverIntent沿键盘/焦点事件?我的语法或逻辑错了吗?

UPDATE /溶液:

我是通过hoverIntent逻辑挖掘和意识到,本身而言,触发函数来显示/隐藏菜单。解决我的问题是不通过另一个事件触发hoverIntent,而只是通过我的焦点事件直接调用hoverIntent直接调用的函数。后见之明。

回答

0

您是否将键盘事件(keyUp,keyPress或keyDown)绑定到这些关联的元素?我没有使用这个插件,但它看起来像插件只将悬停事件绑定到它创建的元素。您可能必须将键盘事件显式绑定到您要触发的元素。在键盘事件的处理程序中,您需要检查并查看用户按下的键是否为选项卡。你可能还必须以某种方式保存状态(目前活动的菜单等等,尽管你可能可以将它委托给插件本身 - 只是猜测 - 以前没有使用过这个插件!)。