在动画中间而不是结束时运行回调函数

时间:2014-09-01 18:20:17

标签: jquery jquery-animate

好的,我有以下代码在div之后放置opacity div,在函数运行之后需要500毫秒才能再次运行,我需要它在上一个动画中运行100毫秒或更短的时间。

这是我的jquery代码:

var children = [];
        $("#prod-general").children().each(function() {
            children.push(this);
        });

        function fadeThemOut(children) {
            if (children.length > 0) {
                var currentChild = children.shift();
                $(currentChild).set.animate({
                    'opacity': '1'},
                    500, function() {
                        fadeThemOut(children);
                });
            }
        }

这是一个小提琴:http://jsfiddle.net/r5bqatpz/2/

2 个答案:

答案 0 :(得分:2)

使用超时:

    var children = [];
    $("#prod-general").children().each(function() {
        children.push(this);
    });

    function fadeThemOut(children) {
        if (children.length > 0) {
            var currentChild = children.shift();
            $(currentChild).set.animate({
                'opacity': '1'},
                500, function() {
                    //fadeThemOut(children);
            });
            setTimeout(function() {
                 fadeThemOut(children);
            },100);
        }
    }
这是一个小提琴: http://jsfiddle.net/r5bqatpz/3/

答案 1 :(得分:1)

正确的解决方案;用以下方法替换您的方法: -

function fadeThemOut(children) {
    if (children.length > 0) {
        var currentChild = children.shift();
        $(currentChild).animate({
                'opacity': '1'
            },
            500);
        var myVar = setInterval(function() {
            fadeThemOut(children);
        }, 100);

    }
}