2013-10-29 97 views
0

嗨朋友我正在使用jQuery的簡單下拉菜單當我在菜單上輸入鼠標,然後子菜單將出現使用slideDown(2000),當我將鼠標移出然後相同將slideUp(2000)。現在的問題是,如果用戶鼠標進入主菜單,並突然滑出,然後按照我的代碼滑動效果打開整個,然後關閉。我只是想,當用戶鼠標移出從菜單子菜單效果基本show無需全開......爲了您的reffrence我剛纔提到下面下拉菜單使用jQuery slideDown

我的代碼腳本

$(document).ready(function(e) { 
/*Navigation Code*/ 
$('#mainNav nav ul li').mouseenter(function(){ 

    $(this).children('ul').slideDown(200); 
    }) 
$('#mainNav nav ul li').mouseleave(function(){ 

    $(this).children('ul').slideUp(200); 
    }) 
$('#mainNav nav ul li > ul li ul').parent('li').children('a').css({background: 'url(images/navArrow.png) 184px 18px no-repeat'}); 

/*Navigation Code Ends*/ 
}); 

我認爲stop()會幫助但是當我使用它在我的代碼停止工作

請幫我傢伙..提前:)

回答

2

感謝我嘗試添加.stop(),它似乎爲我工作:http://jsfiddle.net/EjnHQ/

像這樣:

$('#mainNav nav ul li').mouseenter(function(){ 
    $(this).children('ul').stop().slideDown(200); 
}); 

$('#mainNav nav ul li').mouseleave(function(){ 
    $(this).children('ul').stop().slideUp(50); 
}); 

我會建議把slideUp步伐比slideDown更快。

如果由於某種原因,它仍然不會爲你嘗試添加.stop(true).stop(true, true), 像這樣的工作:

$('#mainNav nav ul li').mouseenter(function(){ 
    $(this).children('ul').stop(true, true).slideDown(200); 
}); 

$('#mainNav nav ul li').mouseleave(function(){ 
    $(this).children('ul').stop(true, true).slideUp(200); 
}); 

True參數用來還明確所有排隊的動畫。

也不要忘記;在命令的末尾。

0
don't use slideup when mouse out. just hide(); its working fine. example. 

**on mouse over:** 
-------------------------------------- 
$("#btnmenu").hover(function(){ 
    $("#menu").slideDown(); 
}); 


**on mouse out** 
-------------------------------------- 
$("#btnmenu").mouseout(function(){ 
    $("#menu").hide(); 
});