Animare Div dopo che l'animazione Div precedente è stata completata utilizzando deferred object
. Questo semplice metodo funziona con le due funzioni f1
e f2
, tuttavia quando introduco f3
non riesce.Un'animazione Div dopo l'altra utilizzando oggetto posticipato
Esiste un modo migliore per raggiungere questo obiettivo utilizzando l'oggetto posticipato?
JSFiddle: https://jsfiddle.net/j0bgzjvd/
var deferred = $.Deferred();
function animationAgent(element, prevElement) {
$(prevElement).promise().done(function() {
return $(element).css("display", "block").animate({width:360},2000, "linear")
});
}
function f1() {
animationAgent("#div1");
}
function f2() {
animationAgent("#div2", "#div1");
}
function f3() {
animationAgent("#div3", "#div2");
}
deferred.resolve();
deferred.done([ f1, f2, f3 ]);
div {
width: 200px;
height: 200px;
background-color: red;
margin-bottom: 10px;
display: none;
}
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
<div id="div1"></div>
<div id="div2"></div>
<div id="div3"></div>
si può aggiungere un frammento o bidone con questo problema? Qualche errore nella 'console'? –
Si prega di vedere il JSFiddle aggiornato nel post. Nessun errore è presente nella console. Vorrei che i div animassero uno dopo l'altro in armonia, tuttavia come potete vedere la funzione 3 risulta in un disturbo nella sequenza di animazioni. Estrarre f3 consente a f1 e f2 di animare in sequenza - @MoshFeu – jcoulston2
Controlla la risposta di seguito potrebbe aiutare. @ jcoulston2 –