我有一些带回调的动画代码。我需要一段代码才能在回调完成后运行。我不想修改动画代码或回调。如何在运行其他代码之前确保所有回调都已运行。我应该看看队列吗?当动画完成但仍有待回调的回调时,该项是否已从队列中删除?我该怎么办?
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.
我该如何正确地做到这一点? 谢谢!
答案 0 :(得分:1)
下面:
$( '#search' ).queue( someOtherFunc );
这会将该函数添加到效果队列的末尾,这意味着它将在现有动画操作之后调用。
答案 1 :(得分:0)
让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
回调,但这是确保动画完成并且您想要执行任何回调的正确方法。