jQuery - 从数据库中删除后删除表行

时间:2011-08-22 20:32:55

标签: jquery

我尝试删除已从数据库中成功删除的已删除的表行但它不起作用。这是我的代码。

这有效:

$('table td img.delete').click(function(){
    if(confirm("Are you sure you want to permanently delete this?"))    
    $(this).parent().parent().remove();
    }
});

这不起作用:

$('table td img.delete').click(function(){
    if(confirm("Are you sure you want to permanently delete this?"))    
    $.get('cfc/action.cfc?method=deleteLetter&returnformat=plain', {id: $(this).attr('id')},
        function(data){
            if(data.replace(/^\s+|\s+$/g, '')==='ok'){
            $(this).parent().parent().remove();
            }
        });
    }
});

此记录在此处被删除,但表格行仍然存在。任何建议都会非常感激。

谢谢!

5 个答案:

答案 0 :(得分:4)

使用closest查找您要删除的最近的tr元素。此外,您还需要在变量中维护当前行,因为在$.get的成功处理程序中,this不会指向img元素。试试这个

$('table td img.delete').click(function(){
    var $this = $(this);
    if(confirm("Are you sure you want to permanently delete this?"))    
    $.get('cfc/action.cfc?method=deleteLetter&returnformat=plain', {id: $(this).attr('id')},
        function(data){
            if(data.replace(/^\s+|\s+$/g, '')==='ok'){
            $this.closest('tr').remove();
            }
        });
    }
});

答案 1 :(得分:3)

$('table td img.delete').click(function(){
    var currentRow = $(this);
    if(confirm("Are you sure you want to permanently delete this?"))    
    $.get('cfc/action.cfc?method=deleteLetter&returnformat=plain', {id: $(this).attr('id')},
        function(data){
            if(data.replace(/^\s+|\s+$/g, '')==='ok'){
            currentRow.parent().parent().remove();
            }
        });
    }
});

这样可行。

当你在匿名方法/函数中说这个时,然后“this”显示执行代码的方法或对象,但是如果你将$(this)分配给变量,那么你可以在任何地方使用它。

答案 2 :(得分:1)

您的元素可能已超出范围。

尝试返回带有成功指示符的JSON字符串,并明确地将返回值解析为JSON。

var myElementID = $(this).attr('id');
$.get('cfc/action.cfc?method=deleteLetter&returnformat=plain',
    {id: $(this).attr('id')},
    function(data){ 
        if(data.success){ $('#'+myElementID).parent().parent().remove(); }
    }, 'json');

答案 3 :(得分:1)

由于它是异步执行的,this不再指向您认为的元素。将其保存在变量(如目标)中,然后在回调中删除它。

$('table td img.delete').click(function(){
    var target = this; //Save this here.
    if(confirm("Are you sure you want to permanently delete this?"))    
    $.get('cfc/action.cfc?method=deleteLetter&returnformat=plain', {id: $(this).attr('id')},
        function(data){
            if(data.replace(/^\s+|\s+$/g, '')==='ok'){
                $(target).closest("tr").remove(); //Remove closest table row here.
            }
        });
    }
});

答案 4 :(得分:0)

你试过吗

$(this).closest('tr').remove();