0

私は次の構造を持っています

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

    return bool;
});

ただし、アニメーションコールバックは非同期であるため、boolが正しく設定されることはありません。returnステートメントをコールバックに移動しても意味がありません。アニメーションが完了するまでreturnステートメントを待機させるにはどうすればよいですか?

4

2 に答える 2

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.
        }
    });
});
于 2012-06-11T20:55:25.303 に答える
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
        }
    });   
});
于 2012-06-11T20:58:33.327 に答える