jQuery链接AJAX回调函数

时间:2014-09-11 11:43:17

标签: javascript jquery ajax dom callback

我有一个集中的 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回调函数中,它使其与其他函数的异步...我的错。

1 个答案:

答案 0 :(得分:0)

尝试将global:true属性添加到$ .ajax对象。