4

我正在听 ajaxStart() 和 ajaxStop() 来显示/隐藏一个微调器,并且在编写服务器时我正在 JS 中做一些模拟 AJAX 的东西。它只是调用一个函数来使用 setTimeout() 生成模拟数据。现在我只是在微调器上手动调用 hide() 和 show(),但我真的很想在我开始和停止我的“请求”时告诉 JQuery,并让事件通过这种方式,因此,当真正的ajax 请求仍在后台运行时,我不会意外地隐藏()微调器。

这可以轻松完成吗?

编辑:这是我确定的代码,诀窍是保持JQuery.active计数:

function fakeAJAX(f) {
    if(jQuery.active++ === 0 ) {
        jQuery.event.trigger("ajaxStart");
    }
    setTimeout(function () {
        f();
        if(!(--jQuery.active)) {
            jQuery.event.trigger("ajaxStop");
        }
    }, Math.round(Math.random() * 3000 + 250));
}
4

1 回答 1

6

根据您只需要调用的来源:

jQuery.event.trigger( "ajaxStart" );

jQuery.event.trigger( "ajaxStop" );

相应地。

http://jsfiddle.net/zerkms/7RVbz/

于 2012-11-13T00:49:36.437 回答