javascript - jquery 开启。 ('click' )不再适用于调用数据表的新方法

标签 javascript jquery datatables

我改变了创建数据表的方式,因为我想要动态创建列。我的数据表有一列用于披露详细信息。

function format (d) {
       console.log(d);
       var output = '' ;
       $.each(d, function(i, val) {
           output += '<tr><td>' + i + '</td>' + '<td>' + val + '</td>' + '</tr>';
       });
       console.log(output);

       // `d` is the original data object for the row
       return '<table cellpadding="5" cellspacing="0" border="0" style="padding-left:50px;">' + output + '</table>';
    }

    var dataIndex = new Array() ;

    $(document).ready(function() {

        var table = $('#mainDataTable').DataTable( {
            "ajax": "getData.php",
                "columns": [
                {
                    "className":      'details-control',
                    "orderable":      false,
                    "data":           null,
                    "defaultContent": ''
                },
                { "data": "creationTimestamp", "render": function (data) {
                    var date = new Date(data*1000);
                    var month = date.getMonth() + 1;
                    var hours = date.getHours();
                    var minutes = "0" + date.getMinutes();
                    var seconds = "0" + date.getSeconds();

                    var formattedTime = hours + ':' + minutes.substr(-2) + ':' + seconds.substr(-2);

                    return    date.getFullYear() + "-"  + (month.length > 1 ? month : "0" + month) +"-"+ (date.getDate().length > 1 ? date.getDate() :  date.getDate()) + ' ' + formattedTime;
                } },
                { "data": "evt-event" },
                { "data": "evt-app" }
            ],
            "order": [[1, 'desc']],
             "iDisplayLength": 100,
            "createdRow": function( row, data, dataIndex ) {
                $.each(data, function(i, val) {
                    dataIndex[i] = 1;
                    //console.log(i);
                });
            }
        });

随着点击注册

// Add event listener for opening and closing details
            $('#mainDataTable tbody').on('click', 'td.details-control', function () {
                var tr = $(this).closest('tr');
                var row = table.row( tr );


                if (row.child.isShown()) {
                    // This row is already open - close it
                    row.child.hide();
                    tr.removeClass('shown');
                }
                else {
                    // Open this row
                    row.child( format(row.data())).show();
                    tr.addClass('shown');
                }
            });



        });

自从我改变了调用数据表的方式到这个调用

$(document).ready(function() {
$.ajax({
    type: 'POST',
    dataType: 'json',
    url: 'getData.php',

    success: function(d) {
      var table =  $('#mainDataTable').DataTable({

            data: d.data,
            columns: d.columns,
             iDisplayLength : 100,
             order: [[1, 'desc']],
             createdRow: function( row, data, dataIndex ) {
                $.each(data, function(i, val) {
                    dataIndex[i] = 1;
                    console.log(i);
                });
            }


        });
    }
});

问题是数据表上不再检测到单击。这怎么可能?

最佳答案

所以看来监听器没有附加到表。尝试使用

$(document).on('click', '#mainDataTable tr', function() { console....

关于javascript - jquery 开启。 ('click' )不再适用于调用数据表的新方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42325551/

相关文章:

r - Shiny :如何在数据表中显示条形图

jquery - 拖放表格行

javascript - 如何将实时音频从浏览器流式传输到 Icecast 服务器

javascript - 如何使用 Jquery 控制下拉选择选项菜单

javascript - 搜索引擎索引 Javascript 标签

c# - 远程验证不起作用

javascript - 加载未绑定(bind)到组件的蒙版,在父级 X、Y 移动时中断

javascript - 传递 HTML 值以在 JQuery UI 对话框中使用?

php - Codeigniter 分页和 JQuery 操作

javascript - 从变量重新加载数据表