我有一个集中的 ajaxSuccess 回调函数,它应该初始化项目周围各种AJAX调用返回的组件,如下所示:
$(document).ajaxSuccess(function (response, status, xhr) {
initComponents();
});
所以模块级别的ajax调用可能就像:
$.ajax({
url: "whatever",
success: function(data) {
// Do some stuff to update the DOM, like:
$("container").html(data);
}
});
无需在返回的HTML中执行最终组件的初始化。
现在我遇到了这个问题:如果本地ajax回调函数是巨大的,我的意思是,如果它对DOM执行非常繁重的操作,则会发生全局ajaxSuccess函数在调用返回的元素之前触发放在DOM中,可用于jQuery。
那是因为回调函数没有链接,只是按顺序排出(我认为)。
有一种方法可以确保在本地成功回调函数完成后执行全局ajaxSuccess吗?
或者,有更好的方法来管理这些行为吗?
更新 做一些日志记录我很确定在我们进入全局ajaxSuccess之前HTML已经到位。 无论如何,问题仍然存在,因为initComponents()函数中使用的特定jQuery选择器不会检索DOM中注入的元素。
如果我在setTimeout回调中执行initComponents(),它正在工作....但我不想使用超时......
当ajaxSuccess触发时,就像更新的DOM尚不可查询。
更新2: 误报。实际上html的更新是在一个fadeOut回调函数中,它使其与其他函数的异步...我的错。
答案 0 :(得分:0)
尝试将global:true属性添加到$ .ajax对象。