我想检查脚本中是否存在任何未完成的Ajax事件,如下所示:
$('nav a').click(function(){
var url = $(this).attr('href');
$('#content').load(address,function(){
//do some stuff when complete
});
});
现在,如果单击两次导航,则两个请求都将执行,我基本上希望防止这种情况发生。 jQuery提供了.ajaxStart()
和.ajaxStop()
方法,但我不需要操作DOM,因此我不太清楚要调用它们的对象。我正在考虑使用变量:
var busy = false;
$(busy).ajaxStart(function(){this=true});
// etc...
使用
$('nav a').click(function(){
if(busy==false){
var url = $(this).attr('href');
$('#content').load(address,function(){
//do some stuff when complete
});
}
else return false;
});
可是:
答案 0 :(得分:3)
在javascript中执行此操作的正确方法如下:
(function() {
var buzy = false;
$('nav a').click(function(){
if (buzy) return;
buzy = true;
var url = $(this).attr('href');
$('#content').load(address,function(){
//do some stuff when complete
buzy = false;
});
});
}());
要回答原始问题,ajaxStart
可以绑定到document
:
$(document).ajaxStart(function() {
buzy++;
});
$(document).ajaxStop(function() {
buzy--;
});