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

4
我对此感到非常恼火!基本上,我有一个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;
    }
}
3个回答

2
我想你要找的是“stop”命令。使用“stop”命令可以停止之前的动画。在开始下一个动画之前停止之前的动画,可以避免排队大量动画导致的问题。

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

您提到了jquery hover页面上的演示存在问题。请查看带有stop的修改版本的演示。请注意,它没有这个问题:

http://jsfiddle.net/WskXt/


0

不,你不能延迟事件,因为这些事件是由浏览器而不是jquery引发的。相反,您可以使用queue属性将动画放入队列中。只有在前一个动画完成后,队列才会运行下一个动画。

在此页面中搜索queuehttp://api.jquery.com/animate/


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接