0

嗨,朋友们,我正在使用 jQuery 处理简单的下拉菜单。当我在菜单上输入鼠标时,子菜单slideDown(2000)slideUp(2000)使用 现在的问题是,如果用户鼠标进入主菜单并突然将鼠标移出,那么根据我的代码,幻灯片效果会完全打开然后关闭。我只希望当用户将鼠标从菜单中移出时,子菜单将向上滑动,无需完全打开...为了您的参考,我在下面提到了我的代码

脚本

$(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()会有所帮助,但是当我使用它时,我的代码将停止工作

请帮帮我..提前谢谢:)

4

2 回答 2

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)or .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参数还用于清除所有排队的动画。

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

于 2013-10-29T05:44:42.893 回答
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();
}); 
于 2013-10-29T05:56:47.140 回答