iterator()
迭代表格、列、欄或儲存格索引的結果集。
說明
當您處理 DataTables 索引的集合(例如由 tables()
、rows()
、columns()
和 cells()
放置到結果集中的索引)時,您通常希望遍歷這些索引,並對每個索引指向的元素執行某種操作。雖然這可以使用一個或兩個 for
迴圈輕鬆完成,但此方法可以通過為您執行這些迴圈來幫助簡化和減少程式碼。
重要:請注意,如果您正在使用 rows()
、columns()
和 cells()
,從 DataTables 1.10.6 開始,您可能希望使用 rows().every()
、columns().every()
和 cells().every()
方法來迭代每個列、行或儲存格,並將上下文設定為該表格元素,因為這些方法可以簡化您的程式碼,超越此 iterator()
方法在大多數情況下所能實現的。
有多種迴圈類型可用(由 type
參數指定),這些迴圈類型也會影響傳遞到回呼函式的參數
table
- 遍歷實例的上下文(即表格)- 表格設定物件
- 迴圈計數器
columns
- 遍歷結果集中的每個項目- 表格設定物件
- 結果集項目
- 迴圈計數器
column
- 遍歷結果集中的每個表格和欄- 表格設定物件
- 欄索引
- 表格計數器(外部)
- 欄計數器(內部)
column-rows
- 遍歷結果集中的每個表格、欄和列,並套用selector-modifier
。- 表格設定物件
- 欄索引
- 表格計數器(外部)
- 欄計數器(內部)
- 列索引
rows
- 遍歷結果集中的每個項目- 表格設定物件
- 結果集項目
- 迴圈計數器
row
- 遍歷結果集中的每個表格和列- 表格設定物件
- 列索引
- 表格計數器(外部)
- 列計數器(內部)
cell
- 遍歷結果集中的每個表格和儲存格- 表格設定物件
- 列索引
- 欄索引
- 表格計數器(外部)
- 儲存格計數器(內部)
回呼的傳回值會影響此方法的傳回值
- 如果
returns
參數設定為true
,則會傳回一個新的 API 實例,其中結果包含在其結果集中。 - 否則,或
returns
為false
- 如果回呼傳回值,則會傳回一個新的 API 實例
- 否則,將傳回原始實例以進行鏈接。
這稍微複雜一些,目的是確保與沒有 returns
參數且嘗試自動判斷是否需要新 API 實例的 DataTables 版本向後相容。為了簡化,如果您的方法傳回值,請始終將 returns
設定為 true
。
請注意,回呼函式是在 DataTables API 實例的範圍內執行的,該實例的上下文僅設定為傳遞到函式的第一個參數所描述的表格。這可以使存取該特定表格的 API 方法更加容易。
類型
function iterator( [flatten,] type, callback [, returns ] )
- 說明
迭代表格、列、欄或儲存格索引的結果集
- 參數
名稱 類型 可選 1 flatten
是 - 預設值:false 如果為
true
,則傳回的 API 實例的結果集將是一個一維陣列(即,扁平化為單個陣列)。如果為false
(或未指定),則每個結果將串連到實例的結果集。請注意,這僅在您從回呼傳回陣列時相關。2 type
否 迭代器類型 - 有關選項,請參閱上文
3 callback
否 在每次迭代時執行的回呼函式。有關傳遞給函式的參數,請參閱上面的文件。由於此函式是在 API 實例的範圍內執行的,因此它的上下文僅設定為有問題的表格。
4 returns
是 - 預設值:false 指示回呼函式是否將傳回值。如果設定為
true
,則會傳回一個新的 API 實例,其結果集包含回呼函式中的傳回值。如果未設定,或為false
,則會傳回原始實例以進行鏈接,如果回呼方法未傳回任何值。- 傳回值
如果回呼未傳回任何結果(即
undefined
),則為原始 API 實例,否則為一個新的 API 實例,其結果集是回呼的結果,按執行順序排列。
範例
為表格中的每一列新增類別
table.rows().iterator('row', function (context, index) {
$(this.row(index).node()).addClass('lowlight');
});