我有一个带有列的html表,每列都有一个数据属性,如<td data-XXX="####">
,我想找到每个单元格(可以用
$table.find("[data-XXX]")
除非某人有更好的方法),请获取data-XXX属性的值,将其传递给AJAX查询,解析JSON结果,并将结果放在<td>
中,并附带相关数据-XXX领域。也许是所有人最严格的要求......我希望所有这些都是同步完成的,以便同时最大限度地减少很多服务器请求...所以下一个AJAX调用不会被填充,直到上一个表格单元被填满。 / p>
所以...我的问题是具体的 - 同步循环每个数据-XXX单元的最佳方法是什么?
答案 0 :(得分:1)
根据你的描述,我认为你希望ajax调用一个接一个地完成,所以下一个调用在前一个完成之前不会启动。 ajax调用它们本身仍然是异步的(因为它们应该)。你可以这样做:
function processData() {
var items = $table.find("[data-XXX]");
var cntr = 0;
function next() {
if (cntr < items.length) {
var obj = items.eq(cntr);
// do your ajax call with obj
$.ajax(...).done(function(results) {
// process results returned from ajax call
// ...
// now do the next iteration
++cntr;
next();
});
}
}
// start first iteration
next();
}
基本思想是你设置两个状态变量(你的jQuery对象包含要处理的对象列表和一个跟踪下一个要处理的索引变量)。然后,创建一个用于每次迭代的内部函数。在ajax调用的完成处理程序中,您递增计数器,然后开始下一次迭代。
答案 1 :(得分:0)
$table.find("data=XXX").each(function(){
var tdEle = this;
});
结帐数据集: https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.dataset