我有以下代码使用 Jquery 和 asp.net ping 计算机列表。
function ping() {
$('#progress').css("display", "");
$('.comp').each(function () {
var $computer = $(this);
$.getJSON('pingcomputer.aspx', { computer: $(this).attr("rel") }, function (data) {
if (data.Status == '1') {
$($computer).attr("src", "ok.png");
}
else {
$($computer).attr("src", "nok.png");
}
})
})
$('#progress').css("display", "none");
}
ping 正常。 在 ping 开始之前,我想让#progress 可见(一张图片) 在所有计算机都被 ping 后,我想再次隐藏它。
问题是调用该函数时#progress 图像会立即隐藏。 如何检测所有“pingcomputer.aspx”页面何时完成加载?
最佳答案
添加一个计数器来检查已完成的请求数是否与已开始的请求数相同:
function ping() {
$('#progress').css("display", "");
var count = 0,
total = $(".comp").length;
$('.comp').each(function () {
var $computer = $(this);
$.getJSON('pingcomputer.aspx', { computer: $(this).attr("rel") }, function (data) {
count++;
if (data.Status == '1') {
$($computer).attr("src", "ok.png");
}
else {
$($computer).attr("src", "nok.png");
}
if (count==total) $('#progress').css("display", "none");
})
})
}
关于javascript - JSON .each 完成时的 Jquery 触发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6557319/