【发布时间】:2016-07-27 15:20:06
【问题描述】:
我有一个 DataTables (datatables.net) 表设置,它有一个自定义列,其中我有用于不同类型操作的图标。
其中一个操作是删除,我不想将数据重新加载到表中,所以我想知道是否有任何内置函数可以在本地删除数据表行(所以我的脚本删除了服务器,然后我可以删除数据表中的同一行)。
经过一些研究,我找到了“fnDeleteRow”,但我不知道如何使用它。在我的脚本中,我有一个 ajax 调用,并且在成功事件中我想删除该行,但我无法确定单击了链接的行。下面是我现在的位置:
function Delete(id) {
$.ajax({
url: "ajax/ajax.php",
type: "POST",
data: {
action: "delete",
id: id
},
success: function(response){
oTable = $('#table').DataTable();
var row = oTable.closest('tr');
var nRow = row[0];
oTable.DataTable().fnDeleteRow(nRow);
},
error: function (response) {
alert("Something went wrong.");
console.log(response);
},
});
};
这会在控制台中打印以下内容:
TypeError: oTable.closest is not a function
我对 jQuery 很陌生,不知道如何在我的案例中实现这一点。你们有人知道吗?我猜即使我在成功事件中的脚本具有正确的语法,它也不知道第一次单击的按钮/链接是哪一行。我如何确保这样做?
编辑: 这就是我的数据表的启动方式,以防混淆:
function DrawTable() {
$('#table').DataTable( {
"cache": false,
"columnDefs": [
{
"targets": [ 0, 1 ],
"visible": false,
"searchable": true
}
]
} );
}
有人告诉我要使用 jsfiddle,所以我上传了一个。从来没有使用过这个网站,我的标记是生成的,但我手动做了一个。 https://jsfiddle.net/nqeqxzub/9/
【问题讨论】:
-
在初始化插件时存储对table api的引用,不要创建新的
-
@carlodenaro 我在发帖之前已经阅读过那个帖子,但我从来没有真正理解他使用“idindex”的最后一条评论。这一定是他的项目中的某些东西,在我看来,这与上下文无关
-
主要问题是
DataTable()不返回jQuery对象,它返回插件APIdatatables.net/manual/api -
@carlodenaro 我现在在问题中链接了一个 jsfiddle :)
标签: javascript jquery datatables