等待jQuery动画完成而不使用回调

时间:2012-06-11 20:49:21

标签: jquery animation callback

我有以下结构

$('foo').click( function() {
    var bool = false;
    $('bar').animate( function() {
        //bool = something
    });

    return bool;
});

但是因为动画回调是异步的,bool永远不会正确设置。将return语句移动到回调中没有意义。如何让return语句等到动画完成?

2 个答案:

答案 0 :(得分:2)

这是不可能的,返回将立即发生 - 没有办法延迟它。尝试这样做:

$('foo').click( function(e) {
    e.preventDefault();
    var _this = this;
    $('bar').animate( function() {
        if (somecondition) {
            window.location.href = _this.href;
            // or submit the form, etc.
        }
    });
});

答案 1 :(得分:2)

尝试如下,

$('foo').click( function(e) {
    e.preventDefault(); //prevent submission

    var bool = false;
    $('bar').animate( function() {
        //bool = something
        if (bool) { 
           //do what you wanted to do
        }
    });   
});