2016-06-27 9 views
-1

Ich schrieb diesen Code einige Animationen zu machen, und es funktioniert perfekt:Animation in Folge in 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' 
      }); 
    }; 

, aber wenn ich es, um mit einer gewissen Verzögerung mit setTimeout angezeigt werden wollte arbeiten, um es keine internationalen Mehr!

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

versuchen Sie, Ihre Schleife innerhalb der eingestellten Zeit zusammen mit Ihrem Code für die Animation zu setzen. –

+2

'setTimeout' stoppt die Schleife nicht. Im Grunde wird jede Iteration das gleiche 'setTimeout' haben und auf einmal abgehen. –

+0

@ JF-Mechs auf diese Weise immer noch die Animation in der gleichen Zeit angezeigt, wollte ich etwas Verzögerung, so dass die Reihenfolge bemerkenswert sein könnte. –

Antwort

0

können Sie dies versuchen .. Und Stattdessen for-Schleife können Sie .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 !! Vielen Dank Brother^__^ –

+0

@ G.Mab Du bist total Willkommen :) .. Viel Glück –

1

Verwenden Mathematik verwenden:

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

genau :)) das war mein Fehler! –

0

Sie können .queue() verwenden, .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

vielen dank^__ ^ –