2012-09-17 20 views
0

我有一個Nav,它有一個下拉子菜單。當下拉出現我想菜單的工會+下拉這樣的:mouseenter上的聯合jquery

enter image description here

因此,如果鼠標退出粉紅色這整個塊,則子導航消失。目前,如果鼠標僅退出下拉菜單,則下拉菜單消失。 我看到this example,但是把課堂結合在一起並不適合我。

這裏的MY FIDDLE

+0

呃...什麼現在不起作用?對我來說,它在鼠標離開'item0'和'item1'區域時都有效。 – raina77ow

+0

如果您將鼠標放在'item 0'上,則會出現下拉菜單,然後將鼠標移到下拉菜單上,然後返回到'item 0',下拉菜單不應該消失 –

+0

我跟蹤mouseOut事件時看到的第一個問題到控制檯的是,當我將鼠標放在列表中並返回到item0時,to元素正在註冊爲body,而不是該列表項。也許有一個問題,強制列表項是塊而不是使用div等實際塊元素。 – invertedSpear

回答

0

爲什麼不只是來自mouseentermouseleave的目標去掉子類?像this

var animate; 
$(".myClass").mouseenter(function() { 
    clearTimeout(animate); 
    $('.myClass').css('background-color','#777'); 
    $('.mySubClass').css('display','inline'); 
}); 
$(".myClass").mouseleave(function() { 
    animate = setTimeout(function(){ 
    $('.myClass .mySubClass').css('display','none'); 
    $('.myClass').css('background-color','#49616a'); 
    }, 800); 
});​ 

...爲.myClass覆蓋區域已然是菜單和下降的聯合(如相應的元素包括鏈接和下拉菜單)。

我已經修復了另一個潛在的錯誤:可以快速排序mouseleave-mouseenter事件,然後超時功能即使不應該(因爲光標停留在菜單區域中)也會觸發。爲了防止這種情況,增加了一個附加變量(animate);它將超時存儲在mouseleave處理程序中並將其清除到`mouseenter'處理程序中。

+0

我沒有意識到'.myClass'覆蓋區域已經是菜單和放置的結合 –