DataTables 2.3.0

DataTables CDN files for DataTables 2.3.0. This software was originally released on 30th April, 2025.

Release notes

A lot of focus in this release on how the table header's are displayed and control of them. This is in large part getting DataTables ready for the up coming ColumnControl extension (keep an eye on the blog for more information about ColumnControl which will be released in due course). Specifically the header cell is now displayed using flexbox and the order listeners and icons can be controlled independently. Also, the new titleRow option can be used to tell DataTables which row to use for column titles.

Other improvements include a new ajax.submitAs option which tells DataTables if data should be submitted to the server as HTTP parameters or JSON.

Furthermore, there are various fixes and performance improvements. See the release notes below for full details.

New

  • on option which can be used to listen for events during the DataTables initialisation.
  • titleRow option (replaces orderCellsTop). This provides the ability to make any row in the header the "title" row.
  • ajax.submitAs option to control if data should be submitted as HTTP parameters (default), or a JSON string. This replaces ajax.data being used as a function and returning a string (which is still possible, but not recommended and won't work with SearchPanes and others).
  • ordering.handler option which can be used to enable/disable the default column header click-to-order listener.
  • ordering.indicator option which can be used to enable/disable the ordering icons in the table's header cells. Both of these options are useful when working with the new ColumnControl extension to allow maximum flexibility of the UI.
  • language.lengthLabels option, allowing the options in the page length dropdown to be specified by the language options (including a language file).
  • column().name() and columns().names() methods. These are useful if you use columns.name to help identify columns.
  • order.listener() can now accept an array of columns to apply multi-column ordering to when activated.
  • columnOrder option for selector-modifier to give control of column ordering when using columns().
  • Header and footer cell layout now uses flexbox. This involves a new wrapper div in the cells.

Updates

  • Safari 8+ supported (it was released in 2014, inline with the DataTables 10 year policy)
  • When using titleRow (or the legacy orderCellsTop) columns.title is written to only the title target row.
  • destroy() method for updated header / footer
  • Table footer content now uses the same flexbox layout as the header

Fixes

  • Don't append span.dt-column-order to header rows / cells with data-dt-order=disable.
  • Make the DataTable container position: relative for all styling integrations.
  • Performance - Faster column selectors. Only building title / name data when needed, and optimised to get the header cells.
  • Performance - Header rendered will only run on ordering cells when column-visibility is triggered.
  • column().search.fixed() when getting a search that doesn't exist should return null.
  • When restoring an ordering state using column names, if a name isn't found, don't use column index 0, just ignore.
  • If a draw action happens before data is loaded, the table should still show a loading message.
  • After ordering triggered via the API with a named column, column header click to order didn't follow in the expected sequence.
  • Possible "Maximum call stack size exceeded." with loading thousands of rows from the DOM.
  • Define and document the order that column selectors will resolve to. In short, the order is that specified in the selector array, while a string selector (CSS) will resolve to the index order.
  • Fomantic UI workaround for thead > tr > td cells being unstyled

Typescript

  • layout didn't account for functions, nodes or jQuery.
  • Tighten types for selector-modifier so the strings are explicit in the values they can take.
  • OrderArray was missing an empty string option for the direction.
  • Improve types of reduce() and reduceRight()
  • Add this type to callback functions
  • Make args optional in trigger()
  • Correct stateLoadCallback type

Docs

  • Add note about removing diacritic normalisation
  • Correction to parameter types for column-visibility
  • Clarify the top level selectors ignore what has gone before

Files

css

js