在 $.getJSON 成功函数中,我首先触发另一个元素的点击事件:
$('#' + data[0].ID).trigger('click');
触发的点击事件有自己的 $.getJSON 方法将一堆数据加载到 div 中。触发事件后的下一行:
$.each(data[0].ListEntries, function (key, val) {
//this relies on the triggered click event
//having completely loaded all data!
}
起初 $.each 似乎没有做任何事情,但我在触发事件后立即添加了一个警报。响应警报后,$.each 中的代码显示了它应该做什么。
我猜 $.each 在单击事件完成加载数据之前正在运行。
setTimeout 暂停足够长的时间让 click 事件加载数据,但我宁愿不设置任意时间:
setTimeout(function() {
$.each(data[0].ListEntries, function (key, val) {
//this relies on the triggered click event
//having completely loaded all data!
}
}, 1000);
我还尝试了 $.when 和 $.then 无济于事(尽管在 $.each 之前添加警报 $.then 会导致 $.each 工作延迟):
$.when($('#' + data[0].ID).trigger('click')).then(function () {
$.each(data[0].ListEntries, function (key, val) {
//this relies on the triggered click event
//having completely loaded all data!
})