Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何仅在jQuery动画上的所有回调完成后运行某些代码?_Javascript_Jquery - Fatal编程技术网

Javascript 如何仅在jQuery动画上的所有回调完成后运行某些代码?

Javascript 如何仅在jQuery动画上的所有回调完成后运行某些代码?,javascript,jquery,Javascript,Jquery,我有一些带有回调的动画代码。我需要一段代码,只有在回调完成后才能运行。我不想修改动画代码或回调。在运行其他代码之前,如何确保所有回调都已运行。我应该看看队列吗?当动画完成但仍有回调挂起时,该项是否已从队列中删除?我应该在这里做什么 var animateFunc = function () { $('#search').animate({ height: '0px', opacity: '0.0' }, 'fast', 'linear',

我有一些带有回调的动画代码。我需要一段代码,只有在回调完成后才能运行。我不想修改动画代码或回调。在运行其他代码之前,如何确保所有回调都已运行。我应该看看队列吗?当动画完成但仍有回调挂起时,该项是否已从队列中删除?我应该在这里做什么

var animateFunc = function () {
        $('#search').animate({ height: '0px', opacity: '0.0' }, 'fast', 'linear',                          function () {
            $('#search-state').val(searchContainerState.currentPage);

        });
    };
示例调用:

animateFunc();
someOtherFunc(); //someOtherFunc needs to run after the animation callback code.  
如何正确地执行此操作?
谢谢

animateFunc
将回调作为参数,然后在使用
animateFunc
的任何地方,如果您希望在动画上执行任何操作,请将处理程序作为参数传递给它。试试这个

var animateFunc = function (callback) {
        $('#search').animate({ height: '0px', opacity: '0.0' }, 
            'fast', 'linear', function () {
                $('#search-state').val(searchContainerState.currentPage);

                if($.isFunction(callback)){
                    callback();
                }
        });
    };

animateFunc(someOtherFunc);
我知道我正在修改您不需要的
animateFunc
回调,但这是确保动画完整并希望执行任何回调的正确方法。

此处:

$( '#search' ).queue( someOtherFunc );
这将把该函数添加到效果队列的末尾,这意味着它将在现有动画操作之后被调用


现场演示:

我不想修改动画代码或回调。。。为什么?这正是我要找的。谢谢