有没有办法在jQuery动画开始之前调用函数?我希望在可能长队列中的每个动画之前触发一个方法。
我知道.animate()
函数有start
选项,但是当动画被添加到队列而不是实际开始时,它被调用。
答案 0 :(得分:1)
尝试使用jQuery.Deferred()
var beforeStart = function beforeStart() {
$("body").append("<br>beforeStart", $.now());
return $.Deferred(function(dfd) {
setTimeout(dfd.resolve, 3000)
}).promise()
};
$.when(beforeStart())
.then(function() {
$("div").animate({
top:48
}, {
duration:3000,
start:function() {
$("body").append("<br>animation start", $.now());
}
});
})
&#13;
div {
position:relative;
top:0px;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<div>abc</div>
&#13;