删除ajax回调问题

时间:2012-06-19 11:23:33

标签: javascript jquery

我的网站上有一个仪表板,其中包含表格中的一些条目,表格中的每个条目都有一个delete按钮。当用户单击delete按钮时,会发生Ajax调用,我将在回调函数中删除该条目。我的代码:

$(".del").live({
    click: function () {
        $.post("/Home/DeleteTemplate", {
            name: $(this).parent().siblings("td:first").children("a").html()
        }, function (data) {
            $(this).parents("tr").remove(); //Inside the callback
        });
    }
});

现在我的问题是,如果我删除回调函数中的行,则不会立即从条目中删除该行。我必须再次关闭并打开仪表板才能看到结果。

但是如果我删除了回调函数之外的条目,那么它会同时删除:

$(".del").live({
    click: function () {
        $.post("/Home/DeleteTemplate", {
            name: $(this).parent().siblings("td:first").children("a").html()
        });
        $(this).parents("tr").remove(); //Outside the callback   
    }
});

这里有什么问题?

1 个答案:

答案 0 :(得分:4)

this不会在回调中引用您的选择器,请执行以下操作:

$(".del").live({ click: function () { 
  var that = $(this); // added this

  $.post("/Home/DeleteTemplate", 
        { name: that.parent().siblings("td:first").children("a").html() }, 
        function (data) { 
        that.parents("tr").remove(); // used "that" here
        }); 
  } 
});