2011-04-04 185 views
0

我尝试使用下面的代码来创建一个continuely animatationjQuery - 如何设置宽度在增加?

var running = function() { 
    w = jQuery('#belt').width(); 
    if(w >= 940) 
    jQuery('#belt').width(0); 

    jQuery('#belt').animate({width: '+=235px'}, duration, 'linear'); 
} 

jQuery(document).everyTime(duration, running); 

但它不工作,宽度没有得到恢复,但continuely增加,我有没有写错?

+0

如果真的要使用每次,你需要让你的第一个参数字符串,那就是:'$(文件).everyTime (“5s”,function(i){},0);' – diEcho 2011-04-04 12:07:21

+0

@diEcho,通过这种方式,我的动画现在被重置。但是出现了一个新问题,那就是动画现在有什么突然停止的地方? – Edward 2011-04-04 12:14:19

+0

增加持续时间,以及使用'线性'需要什么? – diEcho 2011-04-04 12:17:57

回答

1

您可以简单地使用the complete parameter for jQuery#animate()定义动画完成时应执行的函数。添加一些递归等瞧:

jQuery.fn.continuousAnimation = function() { 
    var $this = this; 
    return $this.animate({ 'width': '+=235px' }, 400, 'linear', function() { 
    $this.width(0).continuousAnimation(); 
    }); 
}; 

jQuery('#belt').continuousAnimation(); 

演示:http://jsfiddle.net/mathias/dRpgv/

+0

它就像一个魅力!非常感谢! – Edward 2011-04-04 14:19:20

0

duration的值是多少?

最好使用

的setInterval(函数(){// 刷新列表},5000)

其中所述第二参数是毫秒数。在每次

注意

如果真的要使用每次,你需要让你的第一个参数字符串,那就是:

的$(document).everyTime(” 5s“, 函数(i){},0);

没有这样的必要使用“线性” 如果动画突然停止然后检查检查duration,增加动画时间或使用slow

jQuery的(“#带”)。动画({宽度的: '+ = 235px'},'slow');

+0

持续时间被设置为'1s',并且突然停止似乎是因为animate()不与'1s'一起工作;我现在将持续时间更改为'3s',并将动画编码为动画()以动画(..,3000,..),然后宽度不会再次被重置... – Edward 2011-04-04 12:39:32

+1

@Edward宽度将在3000 ms后重置。 btw不要为animate和everytime设置相同的值,'everytime()'持续时间将大于'animate()'持续时间 – diEcho 2011-04-04 12:48:01

+0

使每次持续时间大于动画持续时间的作品,似乎jQuery需要一些时间来执行宽度重置,但此方法还添加动画之间的间隔,我试图使用3000反对2990,它在Chrome中工作,而在Firefox中失败。与3000对2900,在Firefox的作​​品也不平滑,我想它不会在低性能的计算机上工作 – Edward 2011-04-04 13:00:43