DataTables 2 的新功能

DataTables 2.1 是 2.x 系列的第一个次要版本,引入了许多新功能,并解决了 2.0 发布后出现的一些问题。

本文档是有关 DataTables 2.1 发布的多个相关文档的一部分。

布局

DataTables 2 中的一个重大新功能是引入了 layout,它取代了旧的 dom 选项,使用起来更容易。根据反馈,2.1 现在将位于同一布局单元格(即数组)中的功能放在同一行上。同样,位于全宽单元格(例如,仅 topbottom)中的项目在行上均匀分布。

要查看实际效果,请考虑以下表格。

姓名办公室开始日期工资
Tiger NixonEdinburgh2011-04-25320800
Garrett WintersTokyo2011-07-25170750
Ashton CoxSan Francisco2009-01-1286000
Cedric KellyEdinburgh2012-03-29433060
Airi SatouTokyo2008-11-28162700
Brielle WilliamsonNew York2012-12-02372000
Herrod ChandlerSan Francisco2012-08-06137500
Rhona DavidsonTokyo2010-10-14327900
Colleen HurstSan Francisco2009-09-15205500
Sonya FrostEdinburgh2008-12-13103600
Jena GainesLondon2008-12-1990560
Quinn FlynnEdinburgh2013-03-03342000
Charde MarshallSan Francisco2008-10-16470600
Haley KennedyLondon2012-12-18313500
Tatyana FitzpatrickLondon2010-03-17385750
Michael SilvaLondon2012-11-27198500
Paul ByrdNew York2010-06-09725000
Gloria LittleNew York2009-04-10237500
Bradley GreerLondon2012-10-13132000
Dai RiosEdinburgh2012-09-26217500
Jenette CaldwellNew York2011-09-03345000
Yuri BerryNew York2009-06-25675000
Caesar VanceNew York2011-12-12106450
Doris WilderSydney2010-09-2085600
Angelica RamosLondon2009-10-091200000
Gavin JoyceEdinburgh2010-12-2292575
Jennifer ChangSingapore2010-11-14357650
Brenden WagnerSan Francisco2011-06-07206850
Fiona GreenSan Francisco2010-03-11850000
Shou ItouTokyo2011-08-14163000
Michelle HouseSydney2011-06-0295400
Suki BurksLondon2009-10-22114500
Prescott BartlettLondon2011-05-07145000
Gavin CortezSan Francisco2008-10-26235500
Martena MccrayEdinburgh2011-03-09324050
Unity ButlerSan Francisco2009-12-0985675
Howard HatfieldSan Francisco2008-12-16164500
Hope FuentesSan Francisco2010-02-12109850
Vivian HarrellSan Francisco2009-02-14452500
Timothy MooneyLondon2008-12-11136200
Jackson BradshawNew York2008-09-26645750
Olivia LiangSingapore2011-02-03234500
Bruno NashLondon2011-05-03163500
Sakura YamamotoTokyo2009-08-19139575
Thor WaltonNew York2013-08-1198540
Finn CamachoSan Francisco2009-07-0787500
Serge BaldwinSingapore2012-04-09138575
Zenaida FrankNew York2010-01-04125250
Zorita SerranoSan Francisco2012-06-01115000
Jennifer AcostaEdinburgh2013-02-0175650
Cara StevensNew York2011-12-06145600
Hermione ButlerLondon2011-03-21356250
Lael GreerLondon2009-02-27103500
Jonas AlexanderSan Francisco2010-07-1486500
Shad DeckerEdinburgh2008-11-13183000
Michael BruceSingapore2011-06-27183000
Donna SniderNew York2011-01-25112000

这里,最上面的行 (top1) 只有一个 Start 单元格,您将看到三个 功能元素 在同一行上。下一行也有三个功能元素,但由于它是一行“完整”的行,因此它们均匀分布。此新增功能使得在一行上放置多个项目变得更加容易,同时保留了 layout 的易用性。

您可以在 此处找到布局选项的更完整的示例

ID 和类名

2.1 还引入了设置由 layout 创建的行和单元格的类名和 ID 的功能。有关详细信息,请参阅 此示例 以及 layout 文档。

表格宽度

与布局相关,如果未找到 style="width: ...width 属性,DataTables 现在会自动将表格宽度设置为 100%。我遇到的几乎所有表格都使用 100% 的宽度,但从 CSS 中读取相对值却令人惊讶地困难,因此 DataTables 现在将做出此假设,以帮助创建简洁明了的标记。

数据类型检测和重音字符

DataTables 2.1 对数据类型检测的工作方式进行了重大改进。以前,使用一个函数,如果列中所有数据点都通过了该函数的测试,则该列将被分配该数据类型。但是,这会导致类似数据和空数据出现问题 - 例如,包含 FontAwesome 图标的列可能会被发现为数值,因为 HTML 被剥离,而数值数据类型允许空单元格!

在 2.1 中,类型检测函数现在可以指定 oneOfallOf 函数。列中至少一个数据点必须通过新的 oneOf 函数,而 allOf 与以前的行为相同。向后兼容性仍然得到保证,因为它支持单个函数。这允许收紧数据类型测试,这些测试已得到实施。

重音字符的自动排序

作为类型检测改进的一部分,2.1 引入了一种新的数据类型:string-utf8。它不同于 string,如果字符串包含 ASCII 范围之外的字符,则会匹配。此新数据类型将使用 localeCompare 对数据进行排序,从而实现对重音字符的正确排序。它不会用于包含仅 ASCII 字符的列,因为它比简单字符串比较慢。

Bulma 1

Bulma 是一个流行的 CSS 框架,用于构建现代 Web 应用程序和网站,长期以来一直受到 DataTables 的支持。今年早些时候,Bulma 发布了 1.0(对该团队表示衷心的祝贺),DataTables 2.1 已更新为完全支持新版本。Bulma 在 1.0 中还引入了暗色模式,现在 DataTables 也完全支持暗色模式。DataTables 示例 都可以选择“Bulma”作为样式框架,并且您可以根据需要在浅色模式和暗色模式之间切换。

这将我们支持的框架中的暗色模式支持扩展到三个:DataTables 默认值、Bootstrap 5 和 Bulma 1。

使用方法

直接在浏览器中加载 DataTables 时,它会自动查找某些库(例如 Moment.js 和 Luxon),并在可用时使用它们。这在 ESM 环境中是不可能的,因为库不会附加到全局作用域。在这种情况下,您需要将外部库告诉 DataTables,现在可以使用 DataTable.use() 静态方法来实现。

例如,以下代码与 此示例 相同,但适用于 ESM(然后通过捆绑器(如 Vite 或 Webpack)进行转换)。

import moment from 'moment';
import DataTable from 'datatables.net';

// Tell DataTables that it can use Moment for date formatting
DataTable.use(moment, 'moment');

// Tell DataTables what date format you want to look for in the HTML data
DataTable.datetime('D MMM YYYY');

// Initialise DataTables
new DataTable('#example');

以及更多...

2.1 还包含其他一些较小的新增功能 - 这些只是“重磅”功能。有关 DataTables 2.1 中新增功能和更改的完整详细信息,请参阅 发行说明