2010-09-10 73 views
0

我創建了一個使用jQuery n hoverIntent的菜單。你可以在這裏
http://bit.ly/dnAEtt菜單奇怪的問題

檢查要看到問題,請,懸停一則兩三個,然後再回到二(請停快了一點)。所有的子菜單都會打開,但在Two下的子菜單不會打開。
這是一個奇怪的行爲,當向前移動時,子菜單將會打開,當你回移時(如一到二到三到二,二到三到四到三等等)
子菜單不會打開。

這是怎麼回事?

回答

1

你的問題是,hoverIntent plugin的超時是不會發生的另一個整整一秒,所以這些調用錯誤的狀態留下的東西:

$('#nav-bar > ul > li').children('div:visible').slideUp(); 
$('#nav-bar > ul > li').children('a').removeClass('current'); 

實際上,你需要清除計時器並執行鼠標移開自己的處理程序,就像這樣:

function outHandler() { 
    $(this).children('div').slideUp(); 
    $(this).children('a').removeClass('current', 450); 
} 

$('#nav-bar > ul > li').hoverIntent({ 
    over: function() { 
     $('#nav-bar > ul > li:has(div:visible)').each(function() { 
      this.hoverIntent_t = clearTimeout(this.hoverIntent_t); 
      this.hoverIntent_s = 0; 
      outHandler.call(this); 
     }); 
     $(this).children('div').slideDown('slow'); 
     $(this).children('a').addClass('current', 250); 
    }, 
    timeout: 1000, 
    out: outHandler 
}); 

我承認這是一個有點混亂,不過...。那的插件沒有提供一個乾淨的方法來做到這一點的結果。

You can see the updated/working version here

-1

當你懸停它的鏈接時,仍在上漲的子菜單不會再次下降。註冊懸停的函數可能會檢查菜單是否已經擴展(它仍然是當它正在上升時),然後決定它不必再次下降(即使它應該)。

請張貼一些代碼,以便我們可以幫助解決它。