javascript - 如何实现jQuery动画排队?

标签 javascript jquery animation

Possible Duplicate:
jquery finish one animation then start the other one

我有一组通过 ajax 加载的 div(我们讨论的是 6 个 div,代表 6 个产品)。

我想要完成的是一个渐进式动画,就像每个 div 的 jquery.fadeIn() ,在前一个 div 的动画完成之后。执行此操作的最佳方法是什么?

我是这样想的:

  1. 我通过ajax获取新的html元素 - 完成
  2. 我迭代它们 - 我可以将它们插入隐藏然后迭代它们
  3. 对于每个动画,我都会用 fadeIn() 来显示它,当动画完成时,我会显示下一个动画 - 对于每个动画,我都会执行 fadeIn 并以某种方式回调到下一个动画...

最佳答案

您可以构建自己的小插件来对元素进行递归调用以按顺序淡入它们。像这样的东西应该有效:

$.fn.queuedFadeIn = function(speed) {
    var elem = $(this);
    if(elem.length > 0) {
        elem.eq(0).fadeIn(speed, function() {
            elem.slice(1).queuedFadeIn(speed);
        });
    }
}

$('.div_selector').queuedFadeIn(1000);

这应该让它们一个接一个地淡入淡出。为了让事情更清楚,下面是相同的伪代码:

# If there are elements in the selection:
    # Find the first element in selection, fade it in
       # After fade in, call itself, discarding the first element

关于javascript - 如何实现jQuery动画排队?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2283236/

相关文章:

javascript - 第二个下拉菜单内容依赖于第一个下拉菜单

jquery动画问题

javascript - 实现 .hide() 和 .show() 问题,两个 div 都被显示,按钮点击没有变化

javascript - 如何在按键时触发动画

javascript - PHP:同时返回二维数组和单个变量

javascript - 将日期时间转换为 ISO 格式

javascript - 为什么 body.scrollTop 不能在 Google Chrome 和 Firefox 上运行,但可以在 Microsoft Edge 上运行

javascript - ES6 Promise 错误处理

html - 我们可以修改 Font Awesome 旋转速度吗?

animation - 为什么这个简单的 CSS 动画不起作用?