cells().every()
迭代選取的每個儲存格,並將函數上下文設定為有問題的儲存格。
說明
DataTable API 中常用的操作是對儲存格的集合執行操作 - 對每個儲存格執行常見的動作,例如新增事件處理常式、更新資料等。這種儲存格的迭代可以在 DataTables 中以多種方式執行,每種方式都有其優勢
此 cells().every()
方法很可能在大多數情況下最有用,因為它將回呼函數的上下文設定為有問題的儲存格的 cell()
實例(通常 DataTables API 中的回呼會將其上下文設定為最上層的 API 階層)。簡而言之,這表示您可以使用諸如 cell().data()
等方法,作為此方法提供的回呼中的 this.data()
。
請考慮以下使用 each()
的範例,它會迭代已選取的儲存格索引 - 我們需要取得每個儲存格的 cell()
物件才能直接使用它
table.cells().eq(0).each( function ( index ) {
var cell = table.cell( index );
var data = cell.data();
// ... do something with data(), or cell.node(), etc
} );
使用 cells().every()
可以將其改寫為
table.cells().every( function () {
var data = this.data();
// ... do something with data(), or this.node(), etc
} );
儘管在程式碼呈現方面相對簡單的優化,但它可以使程式碼更易讀且直觀。從 DataTables 2 開始,它也顯著提高了效能,因為 API 實例不需要在每次迴圈時建立。
另一個優點是表格內容會自動處理 - 在上面的第一個範例中,使用 each()
的情況下,使用 eq()
方法僅從 API 內容中的第一個表格選取資訊,如果使用多個表格,則會引入複雜性。在 cells().every()
中,表格內容會自動設定為已選取之每個儲存格的適當表格。
類型
function cells().every( fn )
- 說明
迭代每個選取的儲存格
- 參數
名稱 類型 可選 1 fn
否 針對每個選取的儲存格執行的函式。函式的內容會設定為有問題儲存格的 API 實例。
從 DataTables 1.10.8 開始,該函式會傳遞以下參數
- 儲存格的列索引
- 儲存格的欄索引
- 表格迴圈計數器
- 儲存格迴圈計數器
不預期或不會對傳回值採取任何動作。
- 傳回
選取儲存格的 DataTables API 實例。
範例
將類別新增至符合來源資料中邏輯要求的儲存格
var table = new DataTable('#myTable');
table.cells().every(function () {
if (this.data() > 50) {
$(this.node()).addClass('warning');
}
else {
$(this.node()).removeClass('warning');
}
});
相關
以下選項直接相關,在您的應用程式開發中也可能很有用。