DataTable slidedown row.child()

时间:2017-10-23 10:08:13

标签: javascript jquery html datatables

我想在单击按钮时向下滑动每行的div。目前dataTable row.child()以这种形式调用format函数。

请参阅小提琴:http://jsfiddle.net/dhirajbodicherla/189Lp6u6/16/

function format ( d ) {
  return '<div class="slider">Test Message</div>';
}

是否可以为每行返回div,如下所示

<div class="slider">Test Message</div>

function format(d){
  return $('div.slider');
}

最后,jQuery看起来像这样。

$('#example 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');
  }
});

2 个答案:

答案 0 :(得分:0)

您可以为style="display: none"元素添加.player,并在必要时向上/向下滑动该元素。

例如:

$('#example tbody').on('click', 'td.details-control', function () {
    var tr = $(this).closest('tr');
    var row = table.row( tr );

    if ( row.child.isShown() ) {
         row.child().find('.player').slideUp(400, function(){
            // This row is already open - close it            
            row.child.hide();

            tr.removeClass('shown');
         });
    }
    else {
        // Open this row
        row.child( format(row.data()) ).show();
        row.child().find('.player').slideDown();
        tr.addClass('shown');
    }
} );

此外,您可以在format()函数中返回jQuery元素,row.child()也接受jQuery作为参数。有关详细信息,请参阅row.child() API方法。

请参阅updated jsFiddle以获取代码和演示。

有关替代解决方案,请参阅Sliding child rows帖子。

答案 1 :(得分:0)

通过使用此代码,避免从DB进行额外的数据交易

$('#mytable').on('click', '.details-control', function () {
    var tr = $(this).closest('tr');
    var row = table.row(tr);
    if (row.child() != null) {
        // This row is already open - close it
        if (row.child.isShown()) {
            row.child.hide();
            tr.removeClass('shown');
        } else {
            row.child.show();
            tr.addClass('shown');
        }
    } else {
        var childTable = format(id, date);
        row.child(childTable).show();
        tr.addClass('shown');
    }
});