Animuj Div po zakończeniu poprzedniej animacji Div przy użyciu deferred object
. Ta prosta metoda działa z dwiema funkcjami: f1
i f2
, jednak po wprowadzeniu f3
kończy się niepowodzeniem.Jedna animacja Div po kolejce z odroczonym obiektem
Czy istnieje lepszy sposób, w jaki mogę to osiągnąć za pomocą odroczonego obiektu?
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>
można dodać fragment lub pojemnik z tym problemem? Jakieś błędy w 'konsoli'? –
Zobacz JSFiddle zaktualizowany we wpisie. Brak błędów w konsoli. Chciałbym, aby divy animowały jeden po drugim w harmonii, jednak jak widać funkcja 3 powoduje zakłócenie sekwencji animacji. Wyciągnięcie f3 pozwala na animację sekwencji f1 i f2 w sekwencji - @MoshFeu – jcoulston2
Sprawdź, czy odpowiedź poniżej może pomóc. @ jcoulston2 –