2016-06-27 10 views
-1

で順番に私はいくつかのアニメーションを作るためにこのコードを書いて、それが完璧に働いている:アニメーションはjQueryの

for (var i = 0; i < $("div[id$='-1']").length; i++) { 
      $("div[data-order="+ i +"]").css({opacity: 0, visibility: "visible"}).animate({ 
       top : '0%', 
       opacity: 1 
      }, { 
       duration : 800, 
       easing : 'linear' 
      }); 
    }; 

が、私はそれがいずれも動作しないsetTimeoutを持ついくつかの遅延で順番にそれを表示したいときもっと!

for (var i = 0; i < $("div[id$='-1']").length; i++) { 
     setTimeout(function() { 
      $("div[data-order="+ i +"]").css({opacity: 0, visibility: "visible"}).animate({ 
       top : '0%', 
       opacity: 1 
      }, { 
       duration : 800, 
       easing : 'linear' 
      }); 
     }, 1000); 
    }; 
+0

アニメーション用のコードとともにループを設定タイムアウトの内側に入れてみてください。 –

+2

'setTimeout'はループの進行を止めません。基本的にすべての反復は同じ 'setTimeout'を持ち、一度にすべて消えます。 –

+0

@ JF-Mechsそのやり方ではまだアニメーションが同時に表示されているので、私はある程度の遅れをとって秩序が目立つようにしたいと思っていました。 –

答えて

0

ます。これを試すことができますし、代わりのループのために、あなたは.each()

$("div[id$='-1']").each(function(index){ 
    setTimeout(function() { 
      $("div[data-order="+ index +"]").css({opacity: 0, visibility: "visible"}).animate({ 
       top : '0%', 
       opacity: 1 
      }, { 
       duration : 800, 
       easing : 'linear' 
      }); 
     }, 1000 * index); 
}); 
+0

yesssss !!おかげで多くの兄弟^ __^ –

+0

@ G.Mabあなたは完全に歓迎しています:) ..幸運 –

1

使用の数学を使用することができます、

setTimeout(function() { 
    // ... 
}, 1000 * i); 
+0

正確:))それは私の間違いでした! –

0

あなたは.queue().delay()を使用することができます.promise()

var order = $("div[data-order]"); 
order.queue("order", $.map(order, function(el) { 
    return function(next) { 
    return $(el).delay(1000).css({opacity: 0, visibility: "visible"}) 
      .animate({ 
       top : '0%', 
       opacity: 1 
      }, { 
       duration : 800, 
       easing : 'linear' 
      }).promise().then(next); 

    } 
})).dequeue("order") 
+0

ありがとう^ ^ –