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

标签 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));
}

最佳答案

根据sources你只需要调用:

jQuery.event.trigger( "ajaxStart" );

jQuery.event.trigger( "ajaxStop" );

相应地。

http://jsfiddle.net/zerkms/7RVbz/

关于javascript - 我如何在 JQuery 中伪造 AJAX 开始/结束事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13354020/

相关文章:

javascript - 从 React Admin 中的同一端点创建多个资源以应用不同的过滤器

javascript - 将 header 授权设置为 Angular $http post

jQuery 设置选择索引

javascript - 如何将一个巨大的div分割成多个div?

JavaScript/jQuery 在脚本中添加 anchor 标记

c# - Jquery ajax 完整未获取自定义响应 header ?

javascript - 映射数据时避免 'Cannot read property of undefined' 错误

javascript - 在return语句中写入代码,在字符串中添加点

javascript - 使用 Javascript 将循环添加到 HTML5 音频

javascript - 如何确保绑定(bind)到 hashChange 事件不冒泡?