DataTables.js删除row()。remove()。draw()调用上的多行

时间:2017-10-26 12:08:59

标签: javascript jquery datatables

row(row).remove().draw(false)数据表中的row删除额外的行时。 这是我的javascript:

$('.wrapper').on('click', '#confirm_delete', function(e) {
    e.preventDefault();
    var modal = $(this).closest('.modal');
    var id = modal.find('#delete_id').val();
    var row = $('#list_bkng_bus').find('.booking-id[value="'+id+'"]').closest('tr');

    $.ajax({
        type: 'POST',
        url: '/includes/ajax/bookings-bus.php',
        dataType: 'json',
        data: { 'delete_id': id },
        success: function(result) {
            bkng_bus_table.row(row).remove().draw(false);
            modal.modal('hide');
            status_message('success', 'Boeking verwijderd');
        },
        error: function(xhr, status, error) {
            console.log(xhr.responseText);
            console.log(error);
            status_message('error', 'Databasefout. (Remove booking business)');
        }
    });

});

这是我的row变量的内容:

0 : tr.even
context : document
length : 1
prevObject : [input.booking-id, prevObject: n.fn.init(1), context: document, selector: "#list_bkng_bus .booking-id[value="57"]"]

所以它包含tr

2 个答案:

答案 0 :(得分:1)

你的代码应该工作,如果没有,那么你的VAR行应该有问题。 如果您有更多信息,请can check

答案 1 :(得分:1)

问题在于,由于生成表的方式(动态),多个事件侦听器被附加到元素。

解决方案是在.off('click')之前使用.on('click', '#confirm_delete', function(e) {。 这使得此代码按预期运行:

$('.wrapper').off('click').on('click', '#confirm_delete', function(e) {
    e.preventDefault();
    var modal = $(this).closest('.modal');
    var id = modal.find('#delete_id').val();
    var row = $('#list_bkng_bus').find('.booking-id[value="'+id+'"]').closest('tr');

    $.ajax({
        type: 'POST',
        url: '/includes/ajax/bookings-bus.php',
        dataType: 'json',
        data: { 'delete_id': id },
        success: function(result) {
            bkng_bus_table.row(row).remove().draw(false);
            modal.modal('hide');
            status_message('success', 'Boeking verwijderd');
        },
        error: function(xhr, status, error) {
            console.log(xhr.responseText);
            console.log(error);
            status_message('error', 'Databasefout. (Remove booking business)');
        }
    });

});