{hero}

row().child()

自 DataTables 1.10 起

获取/设置选定主表行的子行。

描述

DataTables 能够为每行显示子行(在本文档中称为“父行”,以区别于子行)。这些子行附加到每个父行,例如,可以用来提供有关父行的更多信息或编辑表单。子行始终放置在父行的正下方(如果子行被指定为可见,使用 row().child.show() 方法),无论排序、应用于表的搜索词等。如果父行在 DataTables 的当前视图中不可用,子行也将不可见。

子行的内容完全独立于主表(除了它们在文档中的位置)。应用于表的排序、搜索等对子行的顺序没有影响。每个子行通常包含一个单元格,该单元格的 colspan 属性设置为跨越整个表宽度,因此单元格的内容覆盖整个表宽度。但是,也可以传入一个 tr 元素,该元素具有多个单元格(每个表列一个单元格),以便以与主表相同的列结构显示子行数据。

一个父行可以一次附加一个或多个子行。但是,子行被 API 视为一个实体,这意味着它们要么全部显示,要么全部隐藏。

此外,子行可以在隐藏后保留,以便在需要时可以快速轻松地再次显示。隐藏行使用 row().child.hide() 执行。还可以使用 row().child.remove() 或将 false 作为唯一参数的此方法来销毁子行(隐藏并释放其分配的内存),如果不再需要子行。

请注意,此方法不会在创建子行时自动使添加的子行可见。使用 row().child().show() 链式方法(或根据需要使用 row().child.show())。

类型

function row().child()

描述

获取为父行设置的子行。

返回

包含父行子行的 jQuery 对象,如果尚未为父行设置任何子行,则为 undefined

自 1.10.1 起

function row().child( showRemove )

描述

显示或删除并销毁选定行的子行。

参数
返回

DataTables API 实例

function row().child( data [, className ] )

描述

设置要在子行中显示的数据。请注意,调用此方法将替换已附加到父行的任何子行。

参数
返回

DataTables API 实例

示例

根据当前状态显示/隐藏行,并根据需要添加行内容。

var table = new DataTable('#myTable');

$('#example tbody').on('click', 'td.details-control', function () {
	var tr = $(this).parents('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 (the format() function would return the data to be shown)
		row.child(format(row.data())).show();
		tr.addClass('shown');
	}
});

为表中的单个行创建多个子行 - 第一可见行。

var table = new DataTable('#myTable');

table
	.row(':eq(0)')
	.child(['First child row', 'Second child row', 'Third child row'])
	.show();

向所有行添加子行,传入一个 jQuery 创建的 tr 元素,并显示所有子行

var table = new DataTable('#myTable');

table.rows().every(function () {
	this.child(
		$(
			'<tr>' +
				'<td>' +
				rowIdx +
				'.1</td>' +
				'<td>' +
				rowIdx +
				'.2</td>' +
				'<td>' +
				rowIdx +
				'.3</td>' +
				'<td>' +
				rowIdx +
				'.4</td>' +
				'</tr>'
		)
	).show();
});