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

Jquery 在继续处理之前让我的div消失,jquery,jquery-animate,Jquery,Jquery Animate,我有以下jQuery脚本: function fctSaveSuccess(data) { fctHideLoadingDlg(); alert('continue...'); ... } function fctHideLoadingDlg(disableBtn) { $("#loading").fadeTo(5000, 0.5, function () { $("#loading").dialog('destroy').remove();

我有以下jQuery脚本:

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

function fctHideLoadingDlg(disableBtn) {
    $("#loading").fadeTo(5000, 0.5, function () {
        $("#loading").dialog('destroy').remove();
    });
}
我想要实现的是让我的加载div(一种等待的弹出窗口)慢慢消失。但它不起作用,因为当调用fctHideLoadingDlg时,下面的代码将继续执行,即使我设置了5000的衰减

你知道我该怎么预防吗


谢谢。

这很正常。不会阻止执行
fctsavesucces
,因为调用
fadeTo
后,
fctHideLoadingDlg
将立即返回
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(); 
    }); 
}

这很正常。不会阻止执行
fctsavesucces
,因为调用
fadeTo
后,
fctHideLoadingDlg
将立即返回
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(); 
    }); 
}

注意:不要不必要地调用
$(“#加载”)
两次,这是非常低效的。这意味着要查询DOM两次。使用
$(this)
或将结果缓存在变量中并使用它。最好设置一个JSFIDLE来演示您的问题。div的起始不透明度是多少?启动动画时是否可能已经
0.5
?在当前显示的代码中,我没有看到任何可能的问题。我在这里创建了一个JSFIDLE:当单击链接时,即使淡出没有完成,您也会看到警告消息。这是我的问题。注意:不要不必要地调用
$(“#加载”)
两次,这是非常低效的。这意味着要查询DOM两次。使用
$(this)
或将结果缓存在变量中并使用它。最好设置一个JSFIDLE来演示您的问题。div的起始不透明度是多少?启动动画时是否可能已经
0.5
?在当前显示的代码中,我没有看到任何可能的问题。我在这里创建了一个JSFIDLE:当单击链接时,即使淡出没有完成,您也会看到警告消息。那是我的问题。