【问题标题】:How do I fake AJAX start / end events in JQuery?如何在 JQuery 中伪造 AJAX 开始/结束事件?
【发布时间】: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


【解决方案1】:

根据sources你只需要调用:

jQuery.event.trigger( "ajaxStart" );

jQuery.event.trigger( "ajaxStop" );

相应地。

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

【讨论】:

  • 我不知道我可以如此轻松地触发没有 DOM 目标的事件并让它被拾取。工作一种享受,干杯:)
猜你喜欢
  • 2021-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-11
  • 1970-01-01
相关资源
最近更新 更多