我对此非常恼火!基本上,我有一个最终会有一个小菜单的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;
}
}
答案 0 :(得分:2)
我认为你要找的是stop
。 stop
将停止之前的动画。如果您在开始下一个动画之前停止以前的动画,则可以避免排队导致您出现问题的大量动画。
您在jquery悬停页面上提到了有问题的演示。请使用stop查看该演示的此修改版本。请注意它没有问题:
答案 1 :(得分:0)
不,你不能延迟事件,因为它们是由浏览器引发的,而不是jquery引发的。相反,您可以使用queue
属性将动画放入队列中。队列只会在上一个动画完成后运行动画。
在此页面中搜索queue
:http://api.jquery.com/animate/
答案 2 :(得分:0)
也许看看hoverIntent插件。 http://cherne.net/brian/resources/jquery.hoverIntent.html