row().child()
取得/設定所選主表格列的子列。
說明
DataTables 能夠為每個列顯示子列(在本文檔中稱為「父列」,以區分子列)。這些子列附加到每個父列,可用於提供有關父列的額外資訊,或編輯表單。無論表格的排序、搜尋條件等如何,子列將始終緊接在父列之後(如果使用 row().child.show()
方法指定子列為可見)。如果父列在 DataTables 的目前視圖中不可用,子列也不會可見。
子列的內容完全獨立於主表格(除了它們在文件中的位置)。套用至表格的排序、搜尋等對子列的順序沒有影響。每個子列通常包含一個單元格,其具有設定為跨越整個表格寬度的 colspan
屬性,因此單元格的內容會覆蓋整個表格寬度。但是,也可以傳遞一個具有多個單元格(每個表格列一個)的 tr
元素,以在與主表格相同的欄結構中顯示子列數據。
一個父列可以同時附加一個或多個子列。但是,子列被 API 視為一個實體,也就是說,它們可以全部顯示或全部隱藏。
此外,子列可以在隱藏後保留,以便將來需要時可以快速輕鬆地再次顯示。使用 row().child.hide()
執行隱藏列的操作。如果不再需要子列,也可以使用 row().child.remove()
或此方法並將 false
作為唯一參數來銷毀子列(隱藏並釋放其分配的記憶體)。
請注意,此方法不會在建立子列時自動使其可見。請使用 row().child().show()
鏈式方法(或根據需要使用 row().child.show()
)。
類型
function row().child( showRemove )
- 說明
顯示或移除並銷毀所選列的子列。
- 參數
名稱 類型 選填 1 showRemove
否 此參數可以指定為
true
或false
true
:附加到父列的任何子列將立即變為可見。這相當於使用row().child.show()
。false
:如果父列目前附加了任何子列(無論是否顯示),此方法將銷毀這些子列,如果適當,將其從 DOM 中移除。與row().child.hide()
方法不同,此選項會完全從 DataTables 保留的記憶體中移除列。這相當於使用row().child.remove()
。
- 回傳
DataTables API 實例
function row().child( data [, className ] )
- 說明
設定要在子列中顯示的數據。請注意,呼叫此方法將取代已附加到父列的任何子列。
- 參數
名稱 類型 選填 1 data
否 子列中要顯示的數據可以多種不同的方式給定
string
- 作為字串,會建立單個子列,並將數據插入該子列中的單個單元格中。node
- 作為tr
元素,該tr
元素用作子列。如果您希望在子列中定義多個欄,這會很有用。jQuery
- 具有要添加節點的 jQuery 物件。如果 jQuery 結果集中有多個元素,則會將它們作為多個列添加。如果節點是tr
元素,則將其視為子列,否則會自動建立列和單元格,並將 jQuery 結果集中的節點插入其中。array
- 可以透過將上述任何選項作為陣列傳遞,一次添加多個子列。例如,您可能會傳遞一個包含兩個字串元素的陣列,以建立兩個子列,並為每個子列使用字串內容。
2 className
是 - 預設 當 DataTables 產生子列時,會將類別名稱添加到子列的
td
單元格節點。自 1.10.1 起,它也會添加到子列的tr
列節點。這對於將其他樣式資訊新增至子列很有用,以表示它雖然是表格數據的一部分,但卻是超出正常顯示範圍的其他資訊。
請注意,如果在第一個參數中給定
node
或包含節點的 jQuery 物件,則不會自動添加類別名稱 - 假定現有的列已按要求配置。- 回傳
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();
});