javascript - jquery:如何访问 createdRow() 回调中的底层 DataTable?
问题描述
创建行时,我想添加一个包含 , 的子行,以便以后通过++<table>
填充。很简单。回调似乎是一个很好的地方......如果我能让它工作的话。on.click()
DataTable()
ajax
createdRow()
createdRow()
接受 4 个参数,如下所示。
row
- 创建行的 HTML 元素data
- 新行数据的普通 ol' JSONdataIndex
- 表中的第 # 行cells
<td>
- 构成行的 s 的DOM 元素
这些都不是数据表或子对象。不仅如此,我似乎没有办法了解底层<table>
元素。既不$(row).closest('table')
也不$(cells[0]).closest('table')
似乎返回任何东西,$(row).parent()
也不起作用。似乎该行还没有插入到表中。
如果在调用时该行确实没有插入到表createdRow()
中,那么我想我只需要使用另一个回调,例如initComplete()
,并遍历行。但是createdRow()
会很完美,因为所有数据都在 args 中,所以我希望我只是缺少一些简单的东西并且createdRow()
可以工作。
谢谢!
解决方案
您可以使用此处显示的方法之一从表本身访问表的 API 对象。所以,例如,
$('#your_table_id_here').DataTable()
有了这个,您可以执行以下操作来创建子行:
$('#example').DataTable( {
"createdRow": function( row, data, dataIndex, cells ) {
var myTable = $('#example').DataTable();
myTable.row( dataIndex ).child( '<table><tr><td>some data</td></tr></table>' ).show();
}
} );
这基本上使用row()
带有行索引号的 API 调用来获取作为 DataTables 对象(而不是<tr>
元素)的行。
如果您通过 DataTables API 添加新行row.add()
,那么您可以使用从该函数返回的行对象,而无需创建 DataTable 的 API 的新实例:
var row = table.row.add( ['John Doe', 'more info', ...] ).draw();
row.child( '<table><tr><td>some data</td></tr></table>' ).show();
上面的示例假定这table
是创建 DataTable 时分配给 DataTable 的变量:
var table = $('#example').DataTable( {
// your usual DataTable options here
} );
将子项添加到行通常在最初呈现表格时完成,而不使用该createdRow
选项。我认为这是处理诸如打开/关闭按钮(如果你想要的话)之类的最简单的方法。
有关无法访问 HTML 表 ID 的评论的更新。
在createdRow
回调函数中,您也可以将this
其用作选择器:var myTable = $( this ).DataTable();
. 在这种情况下,不需要知道表的 ID。
使用它,我之前的示例变为以下内容:
$('#example').DataTable( {
"createdRow": function( row, data, dataIndex, cells ) {
var myTable = $( this ).DataTable();
myTable.row( dataIndex ).child( '<table><tr><td>some data</td></tr></table>' ).show();
}
} );
推荐阅读
- algorithm - 通过一次翻转 k 位来获得最大 1
- mysql - mysql only_full_group_by off 仍然显示错误
- javascript - 如果用户在 Angular 中按下 Shift 按钮,HostListener 将无法正常工作
- scala - 如何匹配两个数据框的架构
- c# - 无法打印列表的内容,而是打印 Namesspace 和 Classname
- c# - 在 Load 事件中显示带有异步等待的控件时,Visual Studio 设计器崩溃
- c++ - 如何使用 PlaySound 同时执行其他功能?
- python - 我想同时分配2个变量,它们在从另一个文件导入的函数中
- c# - 计算结构创建的实例数
- javascript - 我如何完成这个按钮阵列以使其工作?