如何在JQuery中伪造AJAX开始/结束事件?

Sop*_*unk 4 javascript jquery

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

zer*_*kms 6

根据你需要调用的来源:

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/