从 1.7 升级到 DataTables 1.8

DataTables 1.8 的开发始终考虑其向后兼容性,因此它应该能够替代大多数开发人员正在使用的版本。基于此考虑,还有几个小问题您应该注意,尤其是当开发插件时。

常见升级问题

  • FixedColumns
    • 如果您在 thead 或 tfoot 元素中使用多行,DataTables 1.8 对它的处理方式已发生变化,而且这会对 FixedColumns 额外内容产生连带影响。请更新到 FixedColumns 的最新版本 (2.0.1+)。
  • ColReorder
    • 由于在头部和页脚布局中采用了新方法,ColReorder 必须更新才能完全适用于 DataTables 1.8。它在大多数时间“看来”都能正常工作,但如果没有更新 ColReorder,ColVis 集成将失败。请更新到 ColReorder 的最新版本 (1.0.3+)。
  • bSortCellsTop:
    • 之前 DataTables 会自动将排序处理程序添加到为每列找到的最上面的唯一单元格中。在 1.8 中,凭借其更强的复杂头部功能,此功能现已自动应用到底部的单元格(这种事件处理程序最常见的位置)。使用设置为 true 的 bSortCellsTop 属性,可以恢复原始行为。

新的初始化选项

  • bDeferRender - 延迟呈现
  • mDataSource - 数据源配置
  • iDeferLoading - 延迟第一个 XHR,当在服务器端处理,并使用表格中已有的数据进行第一次绘制
  • bSortCellsTop - 控制在单击排序选项时应该使用头部中的哪个单元格
  • sDefaultContent - 如果 mDataProp 或数据本身为 null,则对单元格使用默认内容
  • fnPreDrawCallback - 允许取消绘制的回调
  • sLoadingRecords - 当使用 Ajax 来源的数据时,在空表格行中显示加载消息(而不是 1.7 中的“没有记录”)。对于服务器端处理,只需将您的加载消息放入普通 HTML 中即可。

API 方法更新

  • fnOpen - 除了纯字符串外,第 2 个参数现在还可以是节点或 jQuery 对象
  • fnGetData - 新的第 2 个参数用于获取目标行中某一列的数据
  • fnUpdate - 当使用数据源选项 (mDataProp) 时,第一个参数可以是对象

插件和 API 开发人员的变化

  • anThExtraanTfExtra
    • 这些属性以前是 aoColumns 中的列定义对象的一部分,但由于不再需要用于 DataTables 的内部缓存,现已移除。在插件中引用它们会导致错误。
  • fnGetNodes
    • 由于 1.8 中的新延迟渲染功能,fnGetNodes 现在只会返回已创建的节点。这意味着如果你正在使用延迟渲染,你可能只会收到全部可能的 TR 元素的一个子集。

如果你确实在升级过程中遇到了任何其他问题,请在 论坛 中告诉我。