我創建了一個使用jQuery n hoverIntent的菜單。你可以在這裏
http://bit.ly/dnAEtt菜單奇怪的問題
檢查要看到問題,請,懸停一則兩三個,然後再回到二(請停快了一點)。所有的子菜單都會打開,但在Two下的子菜單不會打開。
這是一個奇怪的行爲,當向前移動時,子菜單將會打開,當你回移時(如一到二到三到二,二到三到四到三等等)
子菜單不會打開。
這是怎麼回事?
我創建了一個使用jQuery n hoverIntent的菜單。你可以在這裏
http://bit.ly/dnAEtt菜單奇怪的問題
檢查要看到問題,請,懸停一則兩三個,然後再回到二(請停快了一點)。所有的子菜單都會打開,但在Two下的子菜單不會打開。
這是一個奇怪的行爲,當向前移動時,子菜單將會打開,當你回移時(如一到二到三到二,二到三到四到三等等)
子菜單不會打開。
這是怎麼回事?
你的問題是,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
});
我承認這是一個有點混亂,不過...。那的插件沒有提供一個乾淨的方法來做到這一點的結果。
當你懸停它的鏈接時,仍在上漲的子菜單不會再次下降。註冊懸停的函數可能會檢查菜單是否已經擴展(它仍然是當它正在上升時),然後決定它不必再次下降(即使它應該)。
請張貼一些代碼,以便我們可以幫助解決它。