Javascript JQuery是否从td单元中删除按钮?

Javascript JQuery是否从td单元中删除按钮?,javascript,jquery,Javascript,Jquery,我有一个表,用户可以在其中单击以解锁记录。我想删除解锁按钮并替换为文本。例如,一旦他们单击“解锁”,按钮将被删除,文本将显示为“记录已解锁”。我不确定为什么我当前的代码没有删除按钮。如果有人能帮忙,请告诉我。多谢各位 $('.unlockBtn')。在('click',unlockRecord'); 函数unlockRecord(){ var trID=$(this.parents(“tr”).prop(“id”); 如果(确认(“您确定要解锁此记录吗?”)){ $.ajax({ 键入:“PO

我有一个表,用户可以在其中单击以解锁记录。我想删除解锁按钮并替换为文本。例如,一旦他们单击“解锁”,按钮将被删除,文本将显示为“记录已解锁”。我不确定为什么我当前的代码没有删除按钮。如果有人能帮忙,请告诉我。多谢各位

$('.unlockBtn')。在('click',unlockRecord');
函数unlockRecord(){
var trID=$(this.parents(“tr”).prop(“id”);
如果(确认(“您确定要解锁此记录吗?”)){
$.ajax({
键入:“POST”,
url:'Application.cfc?method=unlockRec',
数据:{'recID':trID},
数据类型:“json”
}).完成(功能(obj){
var numRecs=obj.RECORDCOUNT;
如果(对象状态==200){
$('#'+trID).closest('.unlockBtn').remove();
}否则{
警报('错误')
}
}).fail(函数(jqXHR、textStatus、errorshown){
警报(“错误:+错误抛出”);
});
}
}

用户名
地位
日期
杰克,史密斯
活跃的
12/01/2017
下午1时16分

还要删除实际单元格还是只替换内容?我认为您要做的是首先将单击事件放在按钮上,而不是单元格上(例如,
$('.unlockBtn.unlock')。在('click',unlockRecord);
上,然后当您想用文本替换按钮时,您应该删除事件侦听器并替换单元格内容

$('#' + trID)
    .find('input[type="button"]')
        .off()
        .parent('.unlockBtn')
        .html('Record is unlocked');

最后(可能这只是因为您发布了一个示例,但为了以防万一,如果这是一个表,其中显示的html行重复了很多次,那么您需要将按钮id更改为每行唯一的id,就像您对表行所做的那样,以避免冲突。

还需要删除实际的单元格还是只替换内容?我想怎么办您要做的是首先将单击事件放在按钮上,而不是单元格上(例如,
$('.unlockBtn.unlock')。在('click',unlockRecord);
上,当您想用文本替换按钮时,您需要删除事件侦听器并替换单元格内容

$('#' + trID)
    .find('input[type="button"]')
        .off()
        .parent('.unlockBtn')
        .html('Record is unlocked');

最后(可能这只是因为您发布了一个示例,但以防万一,如果这是一个显示的html行重复很多的表,那么您需要将按钮id更改为每行唯一的,就像您对表行所做的那样,以避免冲突,只需添加回您的ajax调用,就可以了

$('.unlockBtn')。在('click',unlockRecord');
函数unlockRecord(){
var trID=$(this.parents(“tr”).prop(“id”);
如果(确认(“您确定要解锁此记录吗?”)){
var cell=$(event.src元素);
$(单元格)。替换为(“记录已解锁”);
}
}

用户名
地位
日期
杰克,史密斯
活跃的
12/01/2017
下午1时16分

只需重新添加ajax调用,就可以了

$('.unlockBtn')。在('click',unlockRecord');
函数unlockRecord(){
var trID=$(this.parents(“tr”).prop(“id”);
如果(确认(“您确定要解锁此记录吗?”)){
var cell=$(event.src元素);
$(单元格)。替换为(“记录已解锁”);
}
}

用户名
地位
日期
杰克,史密斯
活跃的
12/01/2017
下午1时16分

$('#'+trID).查找('.unlockBtn')
-
查找
而不是
最近的
@tymeJV你能解释一下原因吗.最近的()不起作用?
。最近的
搜索父元素,而
查找
搜索子元素。
最近的
在DOM树上运行,
查找
在DOM树下运行。
$('#'+trID).查找('.unlockBtn')
-
查找
而不是
最近的
@tymeJV你能解释一下原因吗。最近的()不起作用?
。最近的
搜索父元素,而
查找
搜索子元素。
最近的
在DOM树上,而
查找
在DOM树下。由于我只发布了一条记录,因此如果有多条记录,我没有显示唯一ID。我使用每个按钮的记录ID。这样我就可以每行都有唯一的ID。是的,我只是尝试替换td单元的内容。
.off()
只是删除事件处理程序。这并不总是必要的,因为jQuery为您清理了很多,但我总是发现自己删除事件侦听器是一个好习惯,而不是假设其他东西会清理我的混乱。如果我删除表行,我还必须删除eventListener吗?真的,这取决于您如何删除行来决定如果您必须手动删除侦听器。我建议您使用任何一种方法,但是使用jquery的内置或都会自动这样做,以避免内存泄漏。但是,我更喜欢在自己之后进行清理,这只是一种习惯。因为我只发布了一条记录,所以如果有多条记录,我没有显示唯一ID。我使用记录每个按钮的ID。这样,我在每行中都有唯一的ID。是的,我只是尝试替换td单元的内容。
.off()
只是删除事件处理程序。这并不总是必要的,因为jQuery为您清理了很多,但我总是发现自己删除事件侦听器是一个好习惯,而不是假设其他东西会清理我的混乱。如果我删除表行,我还必须删除eventListener吗?真的,这取决于您如何删除行来决定如果您必须手动删除侦听器。我建议您使用任何一种方法,但是使用jquery的内置或将自动执行此操作,以避免内存泄漏。不过,我更喜欢在自己完成后作为一种习惯进行清理。