我正在听 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));
}