2022 年 5 月 13 日星期五
艾伦·贾丁

DataTables 1.12

很高兴宣布 DataTables 1.12 的发布。这是一个增量升级,实现了我们许多默认样式的现代化,并显著改善了国际化能力。

在本篇文章中,我将简要介绍 DataTables 中的以下增强功能

  • 内置日期/时间呈现和排序
  • 数字自动区域化显示
  • 优化排序样式
  • 优化行着色

在此版本中,我们还更新了所有扩展,以确保完全兼容,提供它们的新功能并解决已知问题。请阅读本文结尾处有关所有已发布软件的完整发行说明的链接。

此外,此版本表明我们停止对 DataTables 的 IE6 和 IE7 提供支持。虽然 JavaScript 尚未对其移除支持的那些浏览器的访问漏洞进行修复(并且在 DataTables 2 之前将不会被移除),以便它将继续在其中大量运行,但这对于这些旧浏览器的任何 CSS 访问漏洞现已移除,因此我们仅分发完全有效的 CSS。

实时示例

让我们来了解 DataTables 1.12 的应用——对于以前使用过 DataTables 的任何人都将对此感到亲切

名称办公室开始日期工资
老虎 尼克松爱丁堡2011-04-25320800
加勒特·温特斯东京2011-07-25170750
阿什顿 考克斯旧金山2009-01-1286000
塞德里克 凯莉爱丁堡2012-03-29433060
艾莉 萨托东京2008-11-28162700
布里尔 威廉姆森纽约2012-12-02372000
赫罗德 钱德勒旧金山2012-08-06137500
罗娜 戴维森东京2010-10-14327900
科琳 赫斯特旧金山2009-09-15205500
索尼娅 弗罗斯特爱丁堡2008-12-13103600
杰娜 盖恩斯伦敦2008-12-1990560
昆恩 弗林爱丁堡2013-03-03342000
查德 马歇尔旧金山2008-10-16470600
海莉 肯尼迪伦敦2012-12-18313500
塔季扬娜 菲茨帕特里克伦敦2010-03-17385750
迈克尔 席尔瓦伦敦2012-11-27198500
保罗 伯德纽约2010-06-09725000
格洛丽亚 利特尔纽约2009-04-10237500
布拉德利 格里尔伦敦2012-10-13132000
戴 里奥斯爱丁堡2012-09-26217500
珍内特 考德威尔纽约2011-09-03345000
尤里 贝里纽约2009-06-25675000
凯撒 万斯纽约2011-12-12106450
多丽丝 威尔德悉尼2010-09-2085600
安杰莉卡 拉莫斯伦敦2009-10-091200000
加文 乔伊斯爱丁堡2010-12-2292575
詹妮弗 张新加坡2010-11-14357650
布伦登 瓦格纳旧金山2011-06-07206850
菲奥娜 格林旧金山2010-03-11850000
寿 伊藤东京2011-08-14163000
米歇尔 豪斯悉尼2011-06-0295400
苏姬 伯克斯伦敦2009-10-22114500
普雷斯科特 巴特利特伦敦2011-05-07145000
加文 科尔特斯旧金山2008-10-26235500
马尔蒂娜 麦克雷爱丁堡2011-03-09324050
尤尼蒂 巴特勒旧金山2009-12-0985675
霍华德 哈特菲尔德旧金山2008-12-16164500
霍普 弗恩特斯旧金山2010-02-12109850
维维安 哈雷尔旧金山2009-02-14452500
蒂莫西 穆尼伦敦2008-12-11136200
杰克逊 布拉德肖纽约2008-09-26645750
奥利维亚 梁新加坡2011-02-03234500
布鲁诺 纳什伦敦2011-05-03163500
樱花 山本东京2009-08-19139575
索尔 沃尔顿纽约2013-08-1198540
芬恩 卡马乔旧金山2009-07-0787500
塞尔日 鲍德温新加坡2012-04-09138575
泽奈达 弗兰克纽约2010-01-04125250
佐里塔 塞拉诺旧金山2012-06-01115000
詹妮弗 阿科斯塔爱丁堡2013-02-0175650
卡拉 史蒂文斯纽约2011-12-06145600
赫敏 巴特勒伦敦2011-03-21356250
莱尔 格里尔伦敦2009-02-27103500
乔纳斯 亚历山大旧金山2010-07-1486500
沙德 德克尔爱丁堡2008-11-13183000
迈克尔 布鲁斯新加坡2011-06-27183000
唐娜 斯奈德纽约2011-01-25112000

功能

内置日期/时间呈现和排序

在 DataTable 中显示的最常见的数据类型之一是日期和时间信息。我们已经为 ISO8601 数据提供了长期内置支持,但格式化的日期和时间需要插件。现在不需要了!新的 DataTable.render.date() 辅助函数DataTable.datetime() 函数现在可用于分别显示格式化的日期和注册格式化的日期。

语言环境格式化

将日期和时间加载到 DataTable 中时,我们建议线束数据(即通过 Ajax 加载或从 HTML 中读取的数据)采用 ISO8601 格式。新的 DateTable.render.date() 辅助函数可以分配到带有 columns.render 的日期列,它将自动将其格式化为终端用户将识别的格式(例如,在美国为 MM/DD/YYYY,在英国为 DD/MM/YYYY 等 - 这通过你的 浏览器的 API 在全球范围内起作用)。

例如,你可能会使用

$('#example').DataTable({
    columnDefs: [
        {
            target: 4,
            render: DataTable.render.date(),
        },
    ],
});

实战示例.

这不需要任何外部库。但是,如果你想将浏览器的语言环境格式覆盖为自定义格式,这种辅助函数也可以做到,但你需要在你的页面上使用 Moment.jsLuxon

自定义格式

当然,你的数据可能已经格式化好了。要指示 DataTables 如何理解这些格式,请使用 DataTable.datetime() 函数,传入 Moment 或 Luxon 格式字符串以向 DataTables 注册格式(从而允许对数据进行正确的排序)。

DataTable.datetime('D MMM YYYY');
 
$(document).ready(function () {
    $('#example').DataTable();
});

实战示例.

请注意,在这种情况下,你必须在页面上有 Moment 或 Luxon 来注册自定义格式,并且你应该对所使用的库使用确切的格式字符串(它们使用略有不同的格式)。

完整示例集

我们为日期/时间处理示例添加了一个新的示例类别,你可以找到它

数字的自动语言环境渲染

类似于日期格式,世界上没有通用的数字显示格式(使用标准的世界地图)。为了让所有人都能轻松地理解你的数字数据,而不需要你自己进行每种语言环境的自定义配置,我们的 DataTable.render.number() 已更新为执行自动检测。

你现在可以使用分配给 columns.renderDataTable.render.number() 来实现全自动数字格式化

$('#example').DataTable({
    columnDefs: [
        {
            target: 5,
            render: DataTable.render.number(),
        },
    ],
});

实战示例.

这是通过 Intl.NumberFormat API 完成的,该 API 可用于 IE11 及更高版本的所有浏览器中。

排序样式改进

如果你将本页面顶部示例表格与 v1.11 样式表格 进行比较,你会注意到排序图标发生了变化。以前,我们使用 png 背景图像来指示表的排序状态。在 1.12 版本中,我们移除了这些图像,并使用 UTF8 图标替换了它们,并使用伪元素将其放置在表头中。这使得控制图标、图标颜色和其他样式方面变得更加容易,因为现在不需要更新图像,只需几行额外的 CSS 代码即可进行自定义。

此项更改已在 DataTables 中我们所支持的样式框架(例如 Bootstrap、FomaticUI 等)中全面推广,以为轻松设置样式提供了一致的集成。默认样式与所支持的样式框架配合得很好。

行着色改进

如果您曾经尝试在 DataTables 中为表格单元格或行添加背景颜色,您可能很快就会遇到带条纹的行颜色、突出显示的排序行、固定列等问题。最初看似一项简单任务的操作很快会变得密集的 CSS,具体取决于您使用的功能。这是因为为带条纹的行等设置 DataTable 的行色调时使用的是背景颜色,导致了潜在冲突。

不再出现这种情况!我们现在使用嵌入的 box-shadow(使我们的 CSS 现代化的另一个好处)来设置我们所有的行色调。使用色调的 Alpha 通道,您现在可以简单地为单元格和行应用背景颜色,并且它们将与所有 DataTables 功能(包括行选择)协同工作。

其他更改

还有一些较小的更改

  • 通过 Ajax 加载语言文件时,已定义的本地语言选项现在将覆盖远程加载的选项。
  • 现在有一个 columnDefs.target 选项 - 这只是 columnDefs.targets 的别名,但当针对单个列时很有用。
  • 默认处理指示器已更新为更具吸引力。
  • nowrap 类和其他 文本对齐类 现在在所有支持的样式集成中都可用。
  • pluck 支持嵌套数据。

后续步骤

正如我在开头提到的,这是一项针对 DataTables 的增量更新,还有更多内容即将推出。我们正在努力开发 DataTables 2,它将包含一个重大更改,即完成布局的方式(令人担忧的 dom 选项!)以及更好的页眉和页脚处理。事实上,DataTables 2 已经在 CloudTables 中投入生产,但尚未准备好发布且需要对特定功能进行完善。与其等到完成上述操作并将在此版本中描述的功能包含在该版本中,我想尽早将它们发布出来供大家使用。DataTables 2 尚未定义明确的发布日期 - 它将在完成时完成发布!

这很可能将成为 1.x 系列的最后一个版本(尽管在发布 1.10 和 1.11 时我也说过同样的话)!

发行说明

以下是我们今天发布的所有更新的版本说明链接

所有这些发行版现可从我们的下载生成器CDN、NPM 和 Nuget 下载。