{hero}

cells().every()

自 DataTables 1.10.6 起

迭代每个选定的单元格,并将函数上下文设置为所讨论的单元格。

描述

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 )

描述

迭代每个选定的单元格

参数
返回值

选定单元格的 DataTables API 实例。

示例

向满足源数据中逻辑要求的单元格添加一个类

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

table.cells().every(function () {
	if (this.data() > 50) {
		$(this.node()).addClass('warning');
	}
	else {
		$(this.node()).removeClass('warning');
	}
});

相关

以下选项直接相关,在您的应用程序开发中可能也很有用。