2012-08-30 22 views
0

看看我的代码在这里,请:http://jsfiddle.net/FVcJz/7/如何停止不断动画

,当我们将鼠标悬停上的文字,我们看到动画。 如果我们将鼠标悬停在文本上5次,该框将被动画5次。 如何在第一个动画未完成时设置阻止4个剩余动画的代码? 我的意思是只有当动画没有被前一个悬停进行时才有动画.. 那么当我们在文本上悬停5次时,动画将只运行1次(如果4个悬停在动画结束之前)

回答

0

可以使用stop方法..

$(function() { 

$(".tt").hover(function(){ 

    $(".bb").stop().animate({width:'150px'}, 500); 

},function() { 

    $(".bb").stop().animate({width:'100px'}, 500); 


});  
}); 

+0

我想我以不好的方式解释了我的问题。 我的意思是,当您将文字悬停3次时,框的宽度将变为150px,然后变为100px 3次。我希望它在盒子动画中悬停N次时发生1次。 更好的解释: 我希望悬停效果在动画和动画完成时变为禁用,以便启用.. –

+0

意味着这样的事情? $(“.bb”)。hasClass(“started”)) return; $(“。bb”)$(“。tt”)。hover(function(){ “).addClass(”started“); $(”。bb“)。stop()。animate({width:'150px'},500); },function(){ $(” BB “)动画({宽度: '100像素'},500,函数(){ $(”。BB “)。removeClass(” 开始“); }); }); }) ; ' – alessio271288

+0

是的,非常感谢你。<3 –

0

首先你的代码不能正常工作,所以这是正确的代码:jsFiddle

如果我点击n个动画之前停止的时间没有与动画没有问题。你使用了哪个浏览器?

+0

对不起,这里是正确的链接 - > http://jsfiddle.net/FVcJz/6/ 我做了一些改变,但仍然不起作用。 第一次悬停,当箱子动画时,再次悬停。然后在动画完成时悬停。悬停将无法正常工作.. –

+0

是的,当您在动画停止前悬停n次时,该框会生成n次动画..我只想动画一次,因为动画还没有完成! –

0

如果动画已在进行中,您可以使用jquery'animated'选择器进行测试。

if (!$(".bb").is(':animated')) 
{ 
    //no animation yet 
    $(".bb").animate(...); 
} 
+0

你没有得到我的问题。你看过链接吗?! –

+0

你没有得到我的答案。你说过“我的意思是只有当动画未进行时才有动画”,并且我告诉过如何检查动画是否正在进行。 – Preli