在继续处理之前让我的div消失

时间:2012-05-23 07:24:45

标签: jquery jquery-animate

我有以下jQuery脚本:

function fctSaveSuccess(data) {
    fctHideLoadingDlg();
    alert('continue...');
    ...
}

function fctHideLoadingDlg(disableBtn) {
    $("#loading").fadeTo(5000, 0.5, function () {
        $("#loading").dialog('destroy').remove();
    });
}

我想要实现的是让我的加载div(一种等待的弹出窗口)慢慢消失。但是它不起作用,因为当fctHideLoadingDlg被调用时,下面的代码继续被执行,即使我已经设置了5000的衰落...

任何想法如何防止这种情况?

感谢。

1 个答案:

答案 0 :(得分:0)

这很正常。 fctSaveSuccess的执行不会被阻止,因为fctHideLoadingDlg会在致电fadeTo后立即返回。 fadeTo传递一个回调,它将在完成后运行,但不会阻止。

您可以在代码中使用相同的回调路由。函数是Javascript中的对象,因此它们也可以作为参数轻松传递:

function fctSaveSuccess(data) { 
    var afterHide = function () {
        alert('continue...'); 
        /* rest of your code */
    };
    fctHideLoadingDlg(afterHide); 
} 

function fctHideLoadingDlg(callback, disableBtn) { 
    $("#loading").fadeOut(5000, function () { 
        callback();
        $("#loading").dialog('destroy').remove(); 
    }); 
}

jsFiddle Demo