我尝试删除已从数据库中成功删除的已删除的表行但它不起作用。这是我的代码。
这有效:
$('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();
}
});
}
});
此记录在此处被删除,但表格行仍然存在。任何建议都会非常感激。
谢谢!
答案 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();