2011-04-04 6 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

+0

@diEchoこのようにして、私のアニメーションは今リセットされます。しかし、今やアニメーションの間に突然の停止、新しいアイデアが現れます。 – Edward

+0

継続時間を延長し、「線形」を使用する必要性は何ですか? – diEcho

答えて

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

0

durationの値は何ですか?

2番目のパラメータはミリ秒単位の数である

たsetInterval(関数(){// リフレッシュリスト}、5000)

を使用することがよりよいです。毎回の

あなたは毎回利用したい本当に場合は、あなたが最初のパラメータ文字列を作成する必要があります、それは次のようになります。

$(文書).everyTime(」 5s "、 function(i){}、0);

「リニア」を使用してのそのような必要性あなたのアニメイト突然停止し、その後アニメーション時間を増やすかslow

のjQuery(「#ベルト」)を使用し、durationをチェックチェックすると。({幅をアニメーション化: '+ = 235px'}、 'slow');

+0

durationが '1s'に設定されていて、animate()が '1s'で機能しないために突然停止しているようです。私は現在の持続時間を '3s'に変更し、animate()をアニメーション化(..、3000、..)するようにハードコードすると、幅は再びリセットされません... – Edward

+1

@Edwardの幅は3000ミリ秒後にリセットされます。 btwはアニメーションと毎回同じ値を設定しません。 'everytime()'の持続時間は 'animate()'の持続時間よりも長くなります。 – diEcho

+0

アニメーションの持続時間よりも毎回の持続時間が長くなるように設定するとjQueryは幅のリセット、しかし、この方法でもアニメーションの間隔を追加して、私は2990に対して3000を使用しようとしましたが、firefoxで失敗してもクロムで動作します。 3000に対して2900に対しては、Firefoxでも動作しますが、滑らかではありません。低性能のコンピュータでは動作しません。 – Edward

関連する問題