JQuery - 动态地将第三个扩展行添加到表中

时间:2016-05-04 10:52:19

标签: javascript jquery datatables

我在JQuery中使用DataTable创建了一个表(在documentReady上)。

table = $('#transaction').DataTable({
            "ajax": {
                "url": "servicingTransactionsLoad.do",
                "type": "GET",
                "dataSrc": function (json) {
                    for (var i = 0, ien = json.transactions.length; i < ien; i++) {
                        json.transactions[i].date = '<i class="icon-expand-handle color--secondary9 fa fa-plus"></i> ' + json.transactions[i].date;                            
                    }
                    return json.transactions;
                }
            },
            "columns": [
                { "data": "date" },         
                { "data": "description" },
                { "data": "channel" },
                { "data": "amount" }
            ],
            "order": [
                [ 0, "desc" ]
            ]
        });

当您单击要展开的行并提供额外信息时,我会触发一个事件:

    $('#transaction tbody').on('click', 'tr', 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');
                tr.find('.icon-expand-handle').removeClass('fa-minus');
                tr.find('.icon-expand-handle').addClass('fa-plus');
            }
            else {
                // Open this row
                row.child( createExpand2(row.data()) ).show();
                tr.addClass('shown');
                tr.find('.icon-expand-handle').removeClass('fa-plus');
                tr.find('.icon-expand-handle').addClass('fa-minus');
            }
});

createExpand2是一个构建表的方法,该表作为子项添加以提供额外的信息。

function createExpand2 (d) {
   // `d` is the original data object for the row
    return '<table width="100%" border="0" cellspacing="0" cellpadding="0">'+
        '<tr>'+
            '<td class="col-sm-3">Date Posted:'+
            '<br>' + d.datePosted+'</td>'+
            '<td class="col-sm-4">Merchant'+
            '<br>' + d.merchantName + '</td>'+
            '<td class="col-sm-3"></td>'+
            '<td class="col-sm-3">Miles Value'+
            '<br>'+ d.milesValue + '<br><a href="javascript:void(0);">Show calculation and detail</a></td>' +
        '</tr>'+
    '</table>';
}

现在,如果单击href链接,我需要将行展开到第三级。我基本上想调用类似于expand2的方法。它应该将相同的数据传递给方法(因为我将只使用该对象的不同部分)。我不确定下一步是什么。目前,如果我点击第一个孩子,我可以在控制台中看到错误(我认为这是因为如果你点击表格的任何一行就会触发事件)。那么我只是用某种IF语句修改expand2(以确定我们是在主行还是孩子)?或者,当您单击href链接以打开第三行并仍然可以访问“d”数据对象时,我是否会使用不同的事件方法(以及什么?)。

由于

1 个答案:

答案 0 :(得分:0)

如果使用jQuery方法而不是字符串创建第二级,则可以轻松地将单击事件附加到它,然后使用它来扩展第三级

05-08 18:38:45.577 7028-7028/org.azurespot.awesomesde I/LINKEDIN RESPONSE:: {"StatusCode":200,"responseData":"{\n  \"firstName\": \"AFirstName\",\n  \"id\": \"hZvMRB-3Yg\",\n  \"lastName\": \"ALastName\"\n}","Location":""}

此链接显示动态构建行,您可以将点击侦听器添加到

https://jsfiddle.net/stevenkaspar/ysod0ghz/