jQuery滑动菜单 - .stop()

时间:2011-07-21 19:39:37

标签: jquery

我有这个问题。我有滑动菜单(3个级别),当我用鼠标快速交叉菜单时,它会上下滑动几次。我知道jQuery函数.stop()修复了这个,但我不知道如何使用它。

我有这个jquery代码:

$(document).ready(function(){ 
    $('menu li').hover(function() {
        $(this).find('ul.menu2').slideDown().end().find('a.prvy').css('backgroundPosition','bottom center');
        var width = $(this).find('ul.menu2').css("width");
        $(this).find('ul.menu2 li ul.menu3').css("left",width);
        $(this).find('ul.menu2>li').hover(function() {
            $(this).find('ul.menu3')).fadeIn().end().find('div.text').addClass('activ');
        }, function() {
            $(this).find('ul.menu3').fadeOut().end().find('div.text').removeClass('activ');
        });

    }, function() {
        $(this).find('ul.menu2').slideUp(300).end().find('a.prvy').css('backgroundPosition','top center');
    });
}); 

我尝试了一些想法:

 $('menu li').stop(false,true).hover(function() {

OR

 $('menu li').stop(true,true).hover(function() {

但它不起作用。

感谢您的回答,对不起我的英语。

1 个答案:

答案 0 :(得分:1)

您需要在悬停功能中调用stop。

$(document).ready(function(){ 
    $('menu li').hover(function() {
        $(this).find('ul.menu2').stop(...
    }, function() {
        $(this).find('ul.menu2').stop(...
    });
}); 

根据@ tfbox的其他评论进行更新:

由于您使用stoptrue, true,因此您需要使用fadeIn致电fadeOut。如果你不想跳到最后那么你就不能使用这些,而应该使用fadeTo