Tod*_*ddT 2 datatable jquery parent-child
我正在关注Datatables Sliding Child Rows上的这篇博文,但是点击时我无法显示我的行..我只是希望能够在单击第一列时显示子行.我究竟做错了什么?
我的jQuery
<script type="text/javascript">
$(document).ready(function(){
$('#products').DataTable({
"lengthMenu": [[20, 50, 100, 500, -1], [20, 50, 100, 500, "All"]],
"columnDefs": [{ className: "details-control", "targets": [ 0 ] }]
});
});
</script>
<script type="text/javascript">
$('#products 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
$('div.slider', row.child()).slideUp( function () {
row.child.hide();
tr.removeClass('shown');
} );
}
else {
// Open this row
row.child( format(row.data()), 'no-padding' ).show();
tr.addClass('shown');
$('div.slider', row.child()).slideDown();
}
} );
</script>
Run Code Online (Sandbox Code Playgroud)
然后表格本身带有一些虚拟数据来显示
<table id="products" class="table table-striped table-hover table-bordered
table-condensed">
<thead>
<tr>
<th> </th>
<th> </th>
<th><a>TITLE</a></th>
<th><a>ASIN</a></th>
<th><a>PRICE</a></th>
<th><a>SKU</a></th>
<th> </th>
<th> </th>
</tr>
</thead>
<tbody class="product-index">
<% @merchant.products.each do |product| %>
<tr>
<td>+
<div class="slider" name>
<table>
<tr>
<td>
... Data to be shown ...
</td>
</tr>
</table>
</div>
</td>
<td><%= check_box_tag('sellersku[]', product.sellersku) %></td>
<td><%= product.title %></td>
...
<% end %>
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
首先,你没有table参考,即var table = $('#products').DataTable().
您还需要实际插入子行的内容.dataTables子行是动态插入的 - 您不能像标记所示那样使用静态内容.通常,您将使用一个返回子行内容的函数,通常被调用format(data)(并且您实际上在复制的代码中有这样的函数的引用),其中data父行本身.但你可以随心所欲地做到这一点.以下是问题的标记:
function format(data) {
return '<div class="slider" name>'+
'<table>'+
'<tr>'+
'<td>'+
'... Data to be shown ...'+
'</td>'+
'</tr>'+
'</table>'+
'</div>'
}
Run Code Online (Sandbox Code Playgroud)
这两个更改使您的代码工作,包括幻灯片效果 - > http://jsfiddle.net/LmudsL36/
| 归档时间: |
|
| 查看次数: |
3371 次 |
| 最近记录: |