Jquery Ajax在加载完成之前加载回调

时间:2009-10-13 07:44:52

标签: jquery

我正在使用一些非常简单的JQuery Ajax加载,除了一个项目之外,它可以在任何地方使用。在页面完成加载后加载该区域,然后将所有删除链接绑定到ajaxform提交。这将100%工作,直到使用删除按钮。内容重新加载正确但重新绑定似乎在它完全加载之前发生,因为它没有重新绑定删除链接。检查元素集合的大小表明它仍包含已删除的项目(例如,当只有4时显示5)。

以下是代码:

function AjaxLoadCostActivities(CallBack) {
    ShowAjaxProgressIndicator(id_CostActivitiesListing);
    id_CostActivitiesListing.load(url_LoadCostActivities, CallBack);
}

function PrepareCostActivitiesForm() {
    // Submits the form for the delete image button
    $("a.CostActivityDeleteImage").click(function() {
        if (confirm("Are you sure you want to delete this record?")) {
            $(this).parent().ajaxSubmit({
               target: id_CostActivitiesListing,
               success: AjaxLoadCostActivities(PrepareCostActivitiesForm)
            });
            return false;
        }
        return false;
    });  
}

// This is the call that loads the content on page load
// CostActivitiesStartup is just a function that does some unrelated stuff but also
// calls PrepareCostActivitiesForm to prepare the delete forms.
AjaxLoadCostActivities(CostActivitiesStartup);

2 个答案:

答案 0 :(得分:1)

最简单的方法可能是使用jQuery的直播活动。当新内容注入文档时,这些会自动反弹。而不是这一行:

$("a.CostActivityDeleteImage").click(function() {

您可以使用:

$("a.CostActivityDeleteImage").live('click', function() {

答案 1 :(得分:0)

在这段代码中,ShowAjaxProgressIndicator做了什么?

function AjaxLoadCostActivities(CallBack) {
    ShowAjaxProgressIndicator(id_CostActivitiesListing);
    id_CostActivitiesListing.load(url_LoadCostActivities, CallBack);
}

ShowAjaxProgressIndicator是否执行异步代码,该代码应该在回调时执行.load而不是立即执行?