【发布时间】:2012-11-13 00:42:27
【问题描述】:
我正在听 ajaxStart() 和 ajaxStop() 来显示/隐藏微调器,并且在编写服务器时我正在 JS 中做一些模拟 AJAX 的东西。它只是调用一个函数来使用 setTimeout() 生成模拟数据。现在我只是在微调器上手动调用 hide() 和 show(),但我真的很想在我开始和停止我的“请求”时告诉 JQuery,并让事件通过这种方式,所以我不会在 real 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));
}
【问题讨论】:
-
你为什么不写一个模拟 Ajax 响应器。几乎任何服务器端语言的代码都不会超过 10 行。
标签: javascript jquery