2010-08-29 68 views
3

所以,停止jQuery的排队事件

我有这个演示站点最多:

http://webspirited.com/ha2/

如果你将鼠标悬停在主头(不在IE)。你会注意到图像有点变化,

这就是我想要的。

但是,敏锐的目光会注意到,如果您将鼠标悬停在开关上,它将排队等待事件。

我该如何阻止它做这种行为?

回答

6

jQuerys .stop()来救援。

$('#element').stop(true, true).animate({}); 

如果你正在做任何形式的动画与jQuery,stop()将结束队列中。第一个参数表示是否清除完整队列,第二个参数表示是否跳转到当前正在运行的动画的结尾。

您在这里获得的另一个选项是检查元素是否为当前动画,如果是,则跳过新的.animate方法。例如:

$('#element').hover(function(){ 
    if(!$(this).is(':animated'){ // only go in here if $(this) is NOT animated 
     // $(this).animate({}); 
    } 
}, function(){ 
}); 

参考:.stop():animated

+1

.stop(true和false)。工作完美。 我唯一的问题是,在你呼叫停止之后(例如,当你关闭鼠标时)它会造成一些延迟。 这是为什么? – Hailwood 2010-08-29 09:37:39

1

在这个插件请看:http://cherne.net/brian/resources/jquery.hoverIntent.html

hoverIntent是试图 来确定用户的意图插件......像 水晶球,只用鼠标 运动!它的工作原理类似于(并且源自jQuery的内置悬停的 )。 但是,调用onMouseOver函数,而不是立即 而不是立即 等待,直到用户的鼠标在拨打电话前减慢 。

+0

听起来非常有用,感谢分享链接:) – migajek 2010-08-29 09:41:13