gpt4 book ai didi

ajax - 我应该将 "ajaxStart"方法附加到什么?

转载 作者:行者123 更新时间:2023-12-01 08:21:30 25 4
gpt4 key购买 nike

我想检查脚本中是否存在任何未完成的 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;
});

但是:

  1. 合法吗?
  2. 有更简单/更直接的方法吗?

最佳答案

在 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 可以绑定(bind)到 document:

$(document).ajaxStart(function() {
buzy++;
});
$(document).ajaxStop(function() {
buzy--;
});

关于ajax - 我应该将 "ajaxStart"方法附加到什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7111009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com