使用
是否有更好的方法可以使用延迟对象实现这一点?
JSFiddle:https://jsfiddle.net/j0bgzjvd/
延迟对象(deferred object)
在前一个div动画完成后对另一个div进行动画。这种简单的方法适用于两个函数f1
和f2
,但是当我引入f3
时,它会失败。是否有更好的方法可以使用延迟对象实现这一点?
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>