回调:动画完成:在 .promise().done() 之后调用

Posted

技术标签:

【中文标题】回调:动画完成:在 .promise().done() 之后调用【英文标题】:Callbacks : animate complete: called after .promise().done() 【发布时间】:2018-05-26 18:32:03 【问题描述】:

我制作了一个非常简单的插件供我个人使用,它允许在 jQuery 中进行动画旋转。

我还添加了回调函数。

如果rewind 参数为true,则旋转被撤消,然后回调。

如果是false,则在旋转后立即回调。

我不得不这样做,因为由于某种原因,.promise().done(function() ... )complete:animate() 之前被调用

所以我不得不避开这个。

现在的问题是,如果我定位多个元素,则会为每个元素调用回调。因为我假设我使用了each 函数。但我只想要整个动画的一个回调。

这里是fiddle

请问这个怎么做?谢谢!

PS:我在这里看到了一个类似的问题:jQuery $.animate() multiple elements but only fire callback once 但由于.promise().done() 问题而没有申请。而且我不想加变量,我想了解^^

【问题讨论】:

【参考方案1】:

您可以尝试使用each 的索引,并且仅在它是第一个元素时才调用回调

类似:

return this.each(function(i) 
   ....
   ....
   complete: function() 
        i==0 && a.callback &&  a.callback()
  

【讨论】:

有史以来最快、最有效的答案 :) 谢谢!它完美地工作 我在另一个地方看到了你调用回调的地方。不太确定它在那里是如何工作的。没看很久 我在两个地方调用它,一个是没有倒带选项,一个是有倒带选项。避免前后动画之间的回调。

以上是关于回调:动画完成:在 .promise().done() 之后调用的主要内容,如果未能解决你的问题,请参考以下文章

layui数据表格分页加载动画,自己定义加载动画,"加载中..."

Promeise附加方法,done()和finally()

JQuery的异步回调支持 - PromiseDeferred

将额外参数传递给jquery ajax promise回调[重复]

淡入后动画CSS更改?

jQuery 里的 Promise