2011-09-21 64 views
2

http://jsfiddle.net/sJFLq/1/jQuery的停止fadeTo效果

我想要的是一种的鼠标追踪效果,当鼠标悬停向上或向下的div。但是,如果您将鼠标悬停几次然后停止,则效果不断重复。

我该如何解决这个问题?我想我需要某种类似于动画选项的排队功能,但对于fadeTo功能。有任何想法吗?

+1

也许:http://api.jquery.com/stop/ –

+1

可能重复[如何在jQuery中停止效果](http://stackoverflow.com/questions/59896/how-doi-i-停止效果在jquery) – bzlm

回答

5

可以使用.stop方法停止先前的喧闹。如果您通过true作为参数,它也将清除排队的动画。

如果我明白你在找什么东西,那么你想要的是这个(你说你想要一个“鼠标线”,我想这意味着你不想让以前的动画只要鼠标离开该元素停止,因此只有一个调用.stop):

$(".test").mouseover(function(e){ 
    $(this).stop(true).fadeTo(200,1); 
}).mouseout(function(e){ 
    $(this).fadeTo(200,0.3); 
}); 

你可以看到,运行here

2

终止您以前的动画添加.stop()http://jsfiddle.net/sJFLq/5/

$(".test").mouseover(function(e){ 
    $(this).stop(true, true).fadeTo(200,1); 
}).mouseout(function(e){ 
    $(this).stop(true, true).fadeTo(200,0.3); 
}); 
+0

确保并设置两个参数,以根据需要停止。第一个参数清除此对象的任何其他未决动画的队列,第二个参数跳转到动画的结尾(通常需要正确定位下一个动画)。通常,你想'.stop(true,true)'。两者的默认值都是false。有关更多信息,请参阅http://api.jquery.com/stop/。 – jfriend00

+0

谢谢,我已经更新了示例。 – Samich

4

完全按照您在您的标题形容它:)

$(".test").mouseover(function(e){ 
    $(this).stop().fadeTo(200,1); 
}).mouseout(function(e){ 
    $(this).stop().fadeTo(200,0.3); 
}); 
+0

简单的停止也减少了平滑的尾迹效应。 – Bluemagica

+0

@aoi我认为James Allardice的回答正是你想要的! – Andy