Jquery 在继续处理之前让我的div消失
我有以下jQuery脚本: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();
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:当单击链接时,即使淡出没有完成,您也会看到警告消息。那是我的问题。