我正在尝试采取一些行动:
var function some_action() {
// ...
}
但是这个动作需要完成所有的ajax,所以我这样编写:
$(document).one('ajaxStop', some_action);
好的,当所有挂起的ajax请求完成时,该函数将被触发。
但有时当我这样做时,没有待处理的ajax请求,因此在这些情况下one
事件不会触发!
所以我找到了一种方法来检查是否有正在进行的ajax请求?
像:
if($.hasAjaxRunning()) {
$(document).one('ajaxStop', some_action);
} else {
some_action();
}
这样我就可以保证行动被解雇。
答案 0 :(得分:2)
我们可以简单地设置一个全局变量来标记该状态:
// site.js
$(function() {
window.ajax_loading = false;
$.hasAjaxRunning = function() {
return window.ajax_loading;
};
$(document).ajaxStart(function() {
window.ajax_loading = true;
});
$(document).ajaxStop(function() {
window.ajax_loading = false;
});
});
看到,如果任何ajax请求开始,变量window.ajax_loading
将设置为true。当所有ajax请求都结束时,该标志设置为false。
答案 1 :(得分:1)
简单的“IF”声明
if ($.active == 0) {
some_action();
}
作为jQuery函数
$.hasAjaxRunning = function() {
return $.active != 0;
}