2

我的网站中有一个仪表板,其中包含表格中的一些条目,表格中的每个条目都有一个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   
    }
});

这里有什么问题?

4

1 回答 1

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
        }); 
  } 
});
于 2012-06-19T11:25:53.580 回答