Animiere die Div, nachdem die vorherige Div-Animation mit deferred object
abgeschlossen wurde. Diese einfache Methode funktioniert mit den beiden Funktionen f1
und f2
, aber wenn ich f3
einführe, schlägt es fehl.Eine Div-Animation nach der anderen mit einem verzögerten Objekt
Gibt es eine bessere Möglichkeit, dies mit dem verzögerten Objekt zu erreichen?
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>
Können Sie einen Ausschnitt oder ist mit diesem Problem hinzu? Irgendwelche Fehler in der 'Konsole'? –
Bitte beachten Sie die JSFiddle in der Post aktualisiert. In der Konsole sind keine Fehler vorhanden. Ich möchte, dass die Divs nacheinander in Harmonie animieren, aber wie Sie sehen können, führt Funktion 3 zu einer Störung in der Animationsfolge. Durch das Herausnehmen von f3 können f1 und f2 nacheinander animiert werden - @MoshFeu – jcoulston2
Prüfen Sie, ob die folgende Antwort hilfreich ist. @ jcoulston2 –