{hero}

columns().every()

自:DataTables 1.10.6

迭代選取的每個欄位,並將函式內容設定為所討論的欄位。

描述

DataTable API 的典型操作是在欄位集合上執行操作 - 在每個欄位上執行通用操作,例如新增事件處理常式、更新資料等。這種欄位的迭代可以在 DataTables 中以多種方式執行,每種方式都有其自身的優勢

這個 columns().every() 方法在大多數情況下可能最有用,因為它將回呼函式的內容設定為所討論欄位的 column() 實例(通常 DataTables API 中的回呼的內容會設定為最上層的 API 層級)。簡單來說,這表示您可以使用像 column().data() 這樣的方法,在傳遞給此方法的回呼中,使用 this.data() 的方式來使用。

考慮以下使用 each() 的範例,它迭代已選取的欄位索引 - 我們需要取得每個欄位的 column() 物件,以便直接操作它

table.columns().eq(0).each( function ( index ) {
    var column = table.column( index );

    var data = column.data();
    // ... do something with data(), or column.nodes(), etc
} );

使用 columns().every(),這可以改寫成

table.columns().every( function () {
    var data = this.data();
    // ... do something with data(), or this.nodes(), etc
} );

雖然在程式碼呈現方面是一個相對簡單的優化,但它可以使程式碼更易讀且更直觀。自 DataTables 2 起,它也具有顯著更高的效能,因為 API 實例不需要在每次迴圈時都建立。

另一個優點是表單內容會自動處理 - 在上面的第一個範例中,使用了 each()eq() 方法僅用於從 API 內容中的第一個表格中選取資訊,如果使用多個表格,則會引入複雜性。在 columns().every() 中,表單內容會針對已選取的每個欄位自動設定為適當的表格。

類型

function columns().every( fn )

描述

迭代選取的每個欄位

參數
回傳

選取欄位的 DataTables API 實例。

範例

為表格中的每個欄位新增篩選器到頁尾

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

table.columns().every(function () {
	var that = this;

	$('input', this.footer()).on('keyup change', function () {
		that.search(this.value).draw();
	});
});

為每個具有 select-filter 類別的欄位建立搜尋。

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

table.columns('.select-filter').every(function () {
	var that = this;

	// Create the select list and search operation
	var select = $('<select />')
		.appendTo(this.footer())
		.on('change', function () {
			that.search($(this).val()).draw();
		});

	// Get the search data for the first column and add to the select list
	this.cache('search')
		.sort()
		.unique()
		.each(function (d) {
			select.append($('<option value="' + d + '">' + d + '</option>'));
		});
});

加總所有具有 .sum 類別的欄位,並將總和放入其頁尾儲存格中

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

table.columns('.sum').every(function () {
	var sum = this.data().reduce(function (a, b) {
		return a + b;
	});

	$(el).html('Sum: ' + sum);
});

相關

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