【发布时间】:2023-04-07 20:31:01
【问题描述】:
在上一个 Div 动画完成后使用 deferred object 对 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>
【问题讨论】:
-
你能添加一个sn-p或bin来解决这个问题吗?
console中的任何错误? -
请参阅帖子中更新的 JSFiddle。控制台中没有错误。我希望 div 能够和谐地一个接一个地制作动画,但是正如您所见,函数 3 会导致动画序列出现混乱。取出 f3 允许 f1 和 f2 依次动画 - @MoshFeu
-
查看下面的答案可能会有所帮助。 @jcoulston2
标签: javascript jquery jquery-deferred deferred