如何在JQuery中伪造AJAX开始/结束事件?
我正在听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)); }
根据您需要调用的来源 :
jQuery.event.trigger( "ajaxStart" );
和
jQuery.event.trigger( "ajaxStop" );
相应地。