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 回答