javascript - 等待循环中的每个动画完成后再运行下一个动画

标签 javascript jquery jquery-animate

我希望在向上计数函数上运行延迟,因此每当计数器的完成类名称完成时,只要前一个完成等,它就会运行向上计数。

$('.counter').each(function() {
    var $this = $(this),
        countTo = $this.attr('data-count');

    $({ countNum: $this.text()}).animate({
        countNum: countTo
    },
    {
        duration: 4000,
        easing:'linear',
        step: function() {
            $this.text(Math.floor(this.countNum));
        },
        complete: function() {
            $this.text(this.countNum);
        }
    });  
});

最佳答案

这不适用于 each 循环。您必须使用 complete 回调并自行完成,因为动画是异步的。

我会使用递归、自执行函数。很简单,完成后开始下一个。

var elements = $('.counter');
var current = 0;

(function next() {
    var $this = elements.eq(current),
        countTo = $this.attr('data-count');

    $({countNum: $this.text()}).animate({countNum: countTo}, {
        duration: 4000,
        easing: 'linear',
        step: function() {
            $this.text(Math.floor(this.countNum));
        },
        complete: function() {
            $this.text(this.countNum);

            if( (++current) < elements.length ) {
                next();
            }
        }
    });  
})();

关于javascript - 等待循环中的每个动画完成后再运行下一个动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38957853/

相关文章:

javascript - 如何在外部使用 Angular 6 subscribe() 方法的结果?

Jquery - 悬停时将图像高度和宽度扩展 20%

asp.net - jquery颜色动画间歇性地抛出无效的属性值

php - 提交表单 - 使用 javascript

javascript - 如何将现有 ul 的所有 li 添加到另一个基于其 css 类的 ul 的底部

javascript - Ajax 无法与 Node js 一起使用 - Express js

php - ajax 重定向不起作用

javascript - 当使用 javascript 更改其他页面中复选框的选中状态时,Jquery DataTable 不断返回第一页

jquery - $(this).addClass ('why-you-no-working' );不在航点上工作?

jQuery 动画不稳定