快速鼠标悬停时的jQuery幻灯片菜单抖动行为

快速鼠标悬停时的jQuery幻灯片菜单抖动行为,jquery,slidedown,slideup,Jquery,Slidedown,Slideup,因此,我成功地为菜单创建了一个setTimout slideUp/Down函数,它工作得非常好——但在某些情况下,当用户悬停在链接上,以及他们的子链接上时,它会快速地上下滑动——我知道这个问题很典型,但我尝试了不同的方法,但都没有成功 这里是一个工作演示-你可以看到,如果你把鼠标放在链接上,该功能会发疯 使用.stop1,1与.stop true相同,true将有助于清除某些动画构建: jQuery('.nav.mainmenu > li').each(function() {

因此,我成功地为菜单创建了一个setTimout slideUp/Down函数,它工作得非常好——但在某些情况下,当用户悬停在链接上,以及他们的子链接上时,它会快速地上下滑动——我知道这个问题很典型,但我尝试了不同的方法,但都没有成功

这里是一个工作演示-你可以看到,如果你把鼠标放在链接上,该功能会发疯

使用.stop1,1与.stop true相同,true将有助于清除某些动画构建:

jQuery('.nav.mainmenu > li').each(function() {
        var t = null;
        var $this = jQuery(this);
        var result = jQuery('#result');
        $this.hover(function() {
            t = setTimeout(function() {
                if($this.find('ul').length > 0) {
                    result.stop(1,1).slideDown(200, function() {  // HERE
                        if($this.is(':visible')) {
                            $this.find('ul').show();
                        }
                    });
                }
                t = null;
            }, 300);
        }, function() {
            if (t) {
                clearTimeout(t);
                t = null;
            } else {
                $this.find('ul').hide(0);
                result.slideUp(333, function() { 
                    $this.find('ul').hide(0);
                });
            }
        });
    });
使用.stop1,1与.stop true相同,true将有助于清除某些动画构建:

jQuery('.nav.mainmenu > li').each(function() {
        var t = null;
        var $this = jQuery(this);
        var result = jQuery('#result');
        $this.hover(function() {
            t = setTimeout(function() {
                if($this.find('ul').length > 0) {
                    result.stop(1,1).slideDown(200, function() {  // HERE
                        if($this.is(':visible')) {
                            $this.find('ul').show();
                        }
                    });
                }
                t = null;
            }, 300);
        }, function() {
            if (t) {
                clearTimeout(t);
                t = null;
            } else {
                $this.find('ul').hide(0);
                result.slideUp(333, function() { 
                    $this.find('ul').hide(0);
                });
            }
        });
    });

如果已设置动画但未设置动画,则还可以检查结果是否按如下方式设置动画:

 if($(result).is(':animated')){
  return false;
  }

如果已设置动画但未设置动画,则还可以检查结果是否按如下方式设置动画:

 if($(result).is(':animated')){
  return false;
  }

停止1 eh??我不知道你能做什么that@JeffJones现在你知道了!希望是有用的。当你从一个菜单项转到另一个菜单项时,如果你不带着mouse@Geeo符合事实的重新编辑。谢谢你指出。有人在Firefox中测试过这个吗?得到一些奇怪的结果-谢谢你的帮助!!!停止1 eh??我不知道你能做什么that@JeffJones现在你知道了!希望是有用的。当你从一个菜单项转到另一个菜单项时,如果你不带着mouse@Geeo符合事实的重新编辑。谢谢你指出。有人在Firefox中测试过这个吗?得到一些奇怪的结果-谢谢你的帮助!!!当@Geeo指出问题时重新编辑我的答案当@Geeo指出问题时编辑我的答案