我正在听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));
}
Run Code Online (Sandbox Code Playgroud)
根据你需要调用的来源:
jQuery.event.trigger( "ajaxStart" );
Run Code Online (Sandbox Code Playgroud)
和
jQuery.event.trigger( "ajaxStop" );
Run Code Online (Sandbox Code Playgroud)
相应地.
http://jsfiddle.net/zerkms/7RVbz/