javascript – 停止当前触发期间触发的jQuery事件?

我对此非常恼火!基本上,我有一个div,最终会有一个小菜单,当你将鼠标悬停在另一个div上时,这个小div会向下移动到视图中并变得可见(mouseout会导致相反的情况).

这一切都非常好用,除非我快速鼠标悬停和鼠标移动,我得到闪烁(jQuery队列赶上,我假设).

所以基本上,有没有办法阻止这种情况发生?你能告诉jQuery类似“在这个时间点,在当前队列完成之前不要排队其他任何东西”吗?

我还是jQuery的新手.我下面的代码看起来像它应该工作,但似乎并没有停止添加队列!在这种情况下,请完全不必要地原谅x / y的愚蠢使用,这只是我在发布之前尝试的最后一件事.

有人能帮忙吗?

var x = 0;
var y = 0;

function hideme()
{
    if (x == 0 && y == 0)
    {
        x++;
        $(unimenu).fadeOut('slow');
        $(unimenu).animate({top: "-40px" }, {queue: false, duration: 'slow'});
        x = 0;
    }
}

function showme()
{
    if (y == 0 && x == 0)
    {
        y++
        $(unimenu).fadeIn('slow');
        $(unimenu).animate({top: "40px" }, {queue: false, duration: 'slow'});
        y = 0;
    }
}

最佳答案 我认为你要找的是停止.停止将停止以前的动画.如果在开始下一个动画之前停止以前的动画,则可以避免排队导致问题的大量动画.

http://api.jquery.com/stop/

您在jquery悬停页面上提到了该问题的演示.请使用stop查看该演示的此修改版本.请注意它没有问题:

http://jsfiddle.net/WskXt/

点赞