0

我有以下脚本,它可以很好地显示加载 ajax 内容的时间:

$("#divLoading").ajaxStart(function () {
    $('#divLoading').show();
});

$("#divLoading").ajaxComplete(function () {
    $('#divLoading').hide();
});

但是,这似乎是从点击事件后的延迟开始到内容显示在屏幕上之前结束的,即以下内容被夸大了,只是为了解释问题:

如果我单击执行 ajaxy 的按钮,加载 div 会在单击按钮后 5 秒出现。div 在屏幕上停留 10 秒,div 消失,并且在 div 消失 5 秒后发生内容更改。

知道为什么会发生这种情况,以及如何在任何点击事件发生后立即显示消息,并且仅在 html 完成在屏幕上加载时消失?

4

2 回答 2

1

发生这种情况是因为此函数在实际 ajax 调用期间执行,而不是在您的 click 处理程序和回调之前和之后执行,这发生在 ajax 调用的任一端。

如果您查看您的代码,您可能在 ajax 调用之前在按钮的 click 事件中为 ajax 调用做准备,然后在回调中 ajax 调用完成,因此消息被隐藏,但您仍然有代码要完成。

于 2012-09-26T15:16:27.123 回答
0

我不是 JQuery 的专业人士,但是当我需要在我的项目中完成 AJAX 调用后执行某些操作时,我的情况与您的情况类似,而且它的工作方式似乎是这样的:

$(document).ajaxStop(function() {
            my_jquery_stuff();
});
于 2012-09-26T15:30:10.473 回答