所有子动画完成后回调

时间:2015-09-29 02:01:16

标签: javascript jquery animation

我有一个jQuery动画事件,在此动画的回调事件中有其他动画。

我需要能够检测到所有内容何时完成它正在做的事情,然后在那时调用一个函数。

由于动画发生了几个不同的结果,我正在努力让它按照我的需要工作,而上述解决方案将彻底清除它。

public void doSomethingMethod(ItemStack... arrayOfItemStacks) {
    for (ItemStack itemStack : arrayOfItemStacks) {
        // Do something with itemStack
    }
}

(...)

doSomethingMethod(itemStack1, itemStack2);

ItemStack[] itemStacks = new ItemStack[100];
// Assign 100 ItemStacks to itemStacks
doSomethingMethod(itemStacks);

2 个答案:

答案 0 :(得分:1)

您需要将回调调用代码放在多个位置来处理这些情况。

假设引用callback引用要调用的回调方法

function callback() {
    //callback logic goes here
}

jQuery('.A_Item').stop().animate(Properties, 250, function () {
    var el = jQuery(sID);
    if (!IsOpen) {

        jQuery(el).stop(true, true).animateAuto("height", 250, function () {

            jQuery('body').stop().animate({
                scrollTop: oButton.offset().top
            }, 250, function () {

                if (IsSubItem) {

                    jQuery(el).parent().stop().animateAuto("height", 500, function () {
                        var sButtonID = sID.replace('.A_Item', '').replace('#', '');
                        jQuery('body').stop().animate({
                            scrollTop: jQuery('.Button[item="' + sButtonID + '"]').offset().top
                        }, 500, callback); //if all animations are enabled then call the callback
                    });

                } else {
                    //if the IsSubItem is not set call
                    callback();
                }

            });
        });

    } else {
        //if the open flag is set call the callback
        callback();
    }
});

答案 1 :(得分:0)

如果每个if条件返回true,则可以使用complete最后一次嵌套.animate()的回调

jQuery('body').stop()
.animate(
  { scrollTop: jQuery('.Button[item="' + sButtonID + '"]').offset().top }
  , 500, function() {
  // do stuff
});