2012-02-20 5 views
0

div要素のセット(次のように50とします)に対して次のアニメーションを実行しようとしていますが、$.each()関数は配列の最初の要素。"すべての"要素に対してアニメーション時間が無限に呼び出されました

$.each(droplets, function(){ 
splashVanish(this); 
}); 



    function splashVanish(droplet) { 
    droplet.fadeOut(500, function(){ 
    droplet.css({'top':Math.random()*600+'px','left':Math.random()*1400+'px'}); 
    droplet.remove(); 
    $("body").append(droplet); 
      //recursive call for infinite animation time 
    droplet.fadeIn(500,function(){splashVanish(droplet)}); 
    }); 
} 

上記のコードが実行されると、アレイfadesOutにのみ最初divは、無限animatiion期間のための位置とfadesInをランダム化します。悲しいことに、他の全てのものは静的であり、同じ機能を実行していません。

+0

_dropplet_とは何ですか?それはjQueryオブジェクトですか? _droplets_とは何ですか? jQオブジェクトのコレクション?何らかの並べ替えの配列ですか? – elclanrs

+0

申し訳ありません私はそれを明確にしませんでした。ちょうど 'div'要素です – jmishra

+0

' this。 'は' $ .each'コールバックの全コレクションですが、jquery docは現在の値でなければならないと強く感じています。コールごとにそこにブレークポイントを置き、 'this'の値を調べようとしましたか? – kirilloid

答えて

1

あなたのコメントによると、dropletsdivのコレクションである場合は、代わりにeach()を使用する必要があります。 $.each()は配列を反復処理します。これを試して、それが動作するかどうか確認してください。

droplets.each(function(){ 
    splashVanish($(this)); 
}); 
+0

ああwicked。出来た。ありがとう@elclanrs – jmishra

関連する問題