销毁bootbox

时间:2017-11-26 16:30:33

标签: javascript jquery bootbox

var userDatatable = function (id) {
    $('#datatable_users_container').removeClass('hide');
    goToByScroll('datatable_users_container');

    var dUser = $('#datatable_users').DataTable({
        "responsive"    : true,
        "processing"    : true,
        "serverSide"    : true,
        "destroy"       : true,
        "ajax"          : function (data, callback, settings) {
            $.ajax({
                url         : api.institutions + '/' + id + '/users',
                type        : 'get',
                data        : {
                    'page'      : $('#datatable_users').DataTable().page.info().page + 1,
                    'per_page'  : data.length,
                    'order_by'  : data.order[0].dir,
                    'sort_by'   : data.columns[data.order[0].column].data,
                },
                dataType    : 'json',
                success     : function (response) {
                    callback({
                        recordsTotal    : response.meta.pagination.total,
                        recordsFiltered : response.meta.pagination.total,
                        data            : response.data
                    });

                    // Görselde düzgün görünsün diye, son sütunu ortalar.
                    $('#datatable_users thead th:last').addClass('text-center');
                    $('#datatable_users tbody tr').each(function () {
                        $(this).find('td:last').addClass('text-center');
                    });
                }
            });
        },
        "columns"       : [
            {"data" : "identifier"},
            {"data" : "fullName"},
            {"data" : "email" },
            {"data" : "userType", render : function (data, type, row, meta) {
                if (row.userType == 0) return "Admin";
                if (row.userType == 1) return "Şef";
                if (row.userType == 2) return "Uzman";
            }},
            {"data" : "actions", render : function (data, type, row, meta) {
                return  '<div class="btn-group btn-group-circle btn-group-solid" style="position: relative !important;">' +
                    '<a href="/templates/'+row.identifier+'" class="btn btn-sm green"><i class="icon-magnifier"></i></a>' +
                    '<a href="/templates/edit/'+row.identifier+'" class="btn btn-sm yellow"><i class="icon-note"></i></a>' +
                    '<button class="btn btn-sm red remove-user" data-id="'+row.identifier+'"><i class="icon-trash"></i></button>' +
                    '</div>';
            }},
        ],
        "columnDefs"    : [
            {
                "targets": 'no-sort',
                "orderable": false
            }
        ],
        "bFilter"       : false,
        "sPaginationType": "full_numbers",
    });

    $('#datatable_users tbody').on('click', '.remove-user', function () {
        var identifier = $(this).attr('data-id');
        var dialog = bootbox.confirm({
            size    : 'small',
            message : '<div class="text-center">Silmek istediğinize emin misiniz ?</div>',
            buttons : {
                confirm : {
                    label       : '&nbsp;&nbsp;&nbsp;Evet&nbsp;&nbsp;&nbsp;',
                    className   : 'red-mint'
                },
                cancel : {
                    label       : 'Vazgeç',
                    className   : 'grey-salsa'
                }
            },
            callback : function (result) {
                if (!result)
                    return;

                $.ajax({
                    url         : api.users + '/' + identifier,
                    type        : 'delete',
                    dataType    : 'json',
                    success     : function (response) {
                        toastr.success('Çalışan <em>"'+response.data.fullName+'"</em> silindi.');
                        dUser.ajax.reload(null, false);
                    }
                });
            }
        }).find('.modal-footer').css({'text-align' : 'center'});
    });
};

当用户点击按钮时,我调用userDatatable并重新初始化数据表。第一次,当我单击数据表上的删除按钮时,一次性出现bootbox(一切正常)。但是,如果我关闭数据表并再次重新启动,这次当我单击数据表上的删除按钮时,bootbox会出现两次,依此类推。

我想用datatable再次重新初始化bootbox。在bootbox.confirm调用之前,我尝试在click事件中销毁modal。这次,确认按钮不起作用。

如何彻底销毁bootbox并重新重新初始化。

1 个答案:

答案 0 :(得分:1)

那是因为你绑定了函数click中的userDatatable所以每次调用它时,你添加绑定到按钮,所以刷新dataTable之后你会“ 2在按钮上绑定。

解决方案是将点击绑定在userDatatable函数之外。