{hero}

rows().every()

自:DataTables 1.10.6 起

迭代每個選定的列,並將函式上下文設定為該列。

說明

DataTable API 的一個典型操作是對列集合執行操作 - 對每個列執行常見的操作,例如新增事件處理常式、更新資料等等。在 DataTables 中,可以使用多種方式執行列的迭代,每種方式都有其優點

rows().every() 方法在大多數情況下可能最有用,因為它將回呼函式的上下文設定為相關列的 row() 實例(通常 DataTables API 中的回呼函式的上下文設定在最上層 API 階層)。簡單來說,這表示您可以使用 row().data() 等方法作為此方法的回呼函式中的 this.data()

考慮以下使用 each() 的範例,該範例會迭代已選取的列索引 - 我們需要取得每個列的 row() 物件,才能直接處理它

table.rows().eq(0).each( function ( index ) {
    var row = table.row( index );

    var data = row.data();
    // ... do something with data(), or row.node(), etc
} );

使用 rows().every() 可以將其重寫為

table.rows().every( function ( rowIdx, tableLoop, rowLoop ) {
    var data = this.data();
    // ... do something with data(), or this.node(), etc
} );

雖然在程式碼呈現方面是相對簡單的優化,但它可以使程式碼更具可讀性和直觀性。從 DataTables 2 開始,它的效能也顯著提高,因為 API 實例不需要在每次迴圈中建立。

另一個優點是會自動處理表格上下文 - 在上面的第一個範例中使用 each() 的情況下,會使用 eq() 方法僅從 API 上下文中的第一個表格中選取資訊,如果在多個表格的情況下使用會增加複雜度。在 rows().every() 中,表格上下文會自動設定為已選取之每一列的適當表格。

類型

function rows().every( fn )

說明

迭代每個選取的列

參數
傳回

選取列的 DataTables API 實例。

範例

將子列新增至所有列,傳入 jQuery 建立的 tr 元素,並顯示所有子列

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

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

更新表格中的所有列,僅在完成時重新繪製

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

table.rows().every(function (rowIdx, tableLoop, rowLoop) {
	var d = this.data();

	d.counter++; // update data source for the row

	this.invalidate(); // invalidate the data DataTables has cached for this row
});

// Draw once all updates are done
table.draw();

相關

以下選項直接相關,也可能在您的應用程式開發中有所幫助。