2010-02-03 65 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)綁定到這些關聯的元素?我沒有使用這個插件,但它看起來像插件只將懸停事件綁定到它創建的元素。您可能必須將鍵盤事件顯式綁定到您要觸發的元素。在鍵盤事件的處理程序中,您需要檢查並查看用戶按下的鍵是否爲選項卡。你可能還必須以某種方式保存狀態(目前活動的菜單等等,儘管你可能可以將它委託給插件本身 - 只是猜測 - 以前沒有使用過這個插件!)。