无法使用本地按钮删除jQuery DataTable的当前行

时间:2018-09-05 14:25:23

标签: javascript jquery html css datatable

我有一个jQuery Datatable,并动态添加行。每行都有一个单元格,其中有一个删除按钮。我的问题是我无法使用按钮删除行,甚至无法定位当前行。

这是我的DataTable代码:

var tab_presta = $("#tableau_presta").DataTable({
    "searching": false,
    "paging":   false,
    "ordering": false,
    "info":     false,
    responsive: true,
    "language": {
        "emptyTable": "No product added to the contract for the moment."
      }
});

这是我在提交事件上的每一行上创建按钮的方式:

form2.on('submit', function (event) {

tab_presta.row.add( 
    [            
        '<center><button type="button" id="btn_supp' + (++idCount) + '" onclick="alert(this.parentNode)" class="btn btn-xs btn-block btn-danger confirmation">Delete</button></center>'
    ] 
)
.draw( false );

// here I dynamically add an id to each button based on a variable
$('.btn btn-xs btn-block btn-danger confirmation').each(function() {
        $(this).attr('id', 'suppr' + idCount);
        idCount++;
    });
});

这是我单击每个按钮时要删除的代码:

for (j = 0; j <= btn_count; j++) {
    $("#tableau_presta").on("click", btn_supp[j], function(){
        //tab_presta.row($(this).parents('tr')).remove().draw(false);
        var row = $(this).closest("tr");
        console.log(row);
    });
}

如您所见,我评论了remove()部分,因为它不起作用,因此我试图找到tr中最接近的$(this) (button),但是我没有在结果就是控制台。它是空的,我不明白为什么,因为按钮实际上存在,而且如果我输入onclick"alert(this.id),单击该按钮即可获得其ID。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您无需在循环内绑定click事件。而是使用classattribute selector。在这种情况下,选择以id = ^开头的btn_supp的{​​{1}}的所有元素。

[id^=btn_supp]
$("#tableau_presta").on("click", "[id^=btn_supp]", function() {
  $(this).closest("tr").remove();
});