cells().every()
迭代每个选定的单元格,并将函数上下文设置为所讨论的单元格。
描述
DataTable API 中一个常用的操作是对单元格集合执行操作——对每个单元格执行一个常见的操作,例如添加事件处理程序、更新数据等。在 DataTables 中,可以以多种方式迭代这些单元格,每种方式都有其自身的优势。
此 cells().every()
方法在大多数情况下可能是最有用的,因为它将回调函数的上下文设置为所讨论的单元格的 cell()
实例(通常,DataTables API 中的回调的上下文设置为顶级 API 层次结构)。简单来说,这意味着您在回调中可以像 this.data()
一样使用诸如 cell().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');
}
});
相关
以下选项直接相关,在您的应用程序开发中可能也很有用。