jQuery动画开始

时间:2015-05-31 15:45:41

标签: jquery jquery-animate jquery-queue

有没有办法在jQuery动画开始之前调用函数?我希望在可能长队列中的每个动画之前触发一个方法。

我知道.animate()函数有start选项,但是当动画被添加到队列而不是实际开始时,它被调用。

1 个答案:

答案 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;
&#13;
&#13;