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 (replacesorderCellsTop
). 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 replacesajax.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()
andcolumns().names()
methods. These are useful if you usecolumns.name
to help identify columns.order.listener()
can now accept an array of columns to apply multi-column ordering to when activated.columnOrder
option forselector-modifier
to give control of column ordering when usingcolumns()
.- 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 legacyorderCellsTop
)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 withdata-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 returnnull
.- 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()
andreduceRight()
- Add
this
type to callback functions - Make
args
optional intrigger()
- 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
- //cdn.datatables.net/2.3.0/css/dataTables.bootstrap.css
- //cdn.datatables.net/2.3.0/css/dataTables.bootstrap.min.css
- //cdn.datatables.net/2.3.0/css/dataTables.bootstrap4.css
- //cdn.datatables.net/2.3.0/css/dataTables.bootstrap4.min.css
- //cdn.datatables.net/2.3.0/css/dataTables.bootstrap5.css
- //cdn.datatables.net/2.3.0/css/dataTables.bootstrap5.min.css
- //cdn.datatables.net/2.3.0/css/dataTables.bulma.css
- //cdn.datatables.net/2.3.0/css/dataTables.bulma.min.css
- //cdn.datatables.net/2.3.0/css/dataTables.dataTables.css
- //cdn.datatables.net/2.3.0/css/dataTables.dataTables.min.css
- //cdn.datatables.net/2.3.0/css/dataTables.foundation.css
- //cdn.datatables.net/2.3.0/css/dataTables.foundation.min.css
- //cdn.datatables.net/2.3.0/css/dataTables.jqueryui.css
- //cdn.datatables.net/2.3.0/css/dataTables.jqueryui.min.css
- //cdn.datatables.net/2.3.0/css/dataTables.material.css
- //cdn.datatables.net/2.3.0/css/dataTables.material.min.css
- //cdn.datatables.net/2.3.0/css/dataTables.semanticui.css
- //cdn.datatables.net/2.3.0/css/dataTables.semanticui.min.css
- //cdn.datatables.net/2.3.0/css/dataTables.tailwindcss.css
- //cdn.datatables.net/2.3.0/css/dataTables.tailwindcss.min.css
- //cdn.datatables.net/2.3.0/css/dataTables.uikit.css
- //cdn.datatables.net/2.3.0/css/dataTables.uikit.min.css
js
- //cdn.datatables.net/2.3.0/js/dataTables.bootstrap.js
- //cdn.datatables.net/2.3.0/js/dataTables.bootstrap.min.js
- //cdn.datatables.net/2.3.0/js/dataTables.bootstrap.min.mjs
- //cdn.datatables.net/2.3.0/js/dataTables.bootstrap.mjs
- //cdn.datatables.net/2.3.0/js/dataTables.bootstrap4.js
- //cdn.datatables.net/2.3.0/js/dataTables.bootstrap4.min.js
- //cdn.datatables.net/2.3.0/js/dataTables.bootstrap4.min.mjs
- //cdn.datatables.net/2.3.0/js/dataTables.bootstrap4.mjs
- //cdn.datatables.net/2.3.0/js/dataTables.bootstrap5.js
- //cdn.datatables.net/2.3.0/js/dataTables.bootstrap5.min.js
- //cdn.datatables.net/2.3.0/js/dataTables.bootstrap5.min.mjs
- //cdn.datatables.net/2.3.0/js/dataTables.bootstrap5.mjs
- //cdn.datatables.net/2.3.0/js/dataTables.bulma.js
- //cdn.datatables.net/2.3.0/js/dataTables.bulma.min.js
- //cdn.datatables.net/2.3.0/js/dataTables.bulma.min.mjs
- //cdn.datatables.net/2.3.0/js/dataTables.bulma.mjs
- //cdn.datatables.net/2.3.0/js/dataTables.dataTables.js
- //cdn.datatables.net/2.3.0/js/dataTables.dataTables.min.js
- //cdn.datatables.net/2.3.0/js/dataTables.dataTables.min.mjs
- //cdn.datatables.net/2.3.0/js/dataTables.dataTables.mjs
- //cdn.datatables.net/2.3.0/js/dataTables.foundation.js
- //cdn.datatables.net/2.3.0/js/dataTables.foundation.min.js
- //cdn.datatables.net/2.3.0/js/dataTables.foundation.min.mjs
- //cdn.datatables.net/2.3.0/js/dataTables.foundation.mjs
- //cdn.datatables.net/2.3.0/js/dataTables.jqueryui.js
- //cdn.datatables.net/2.3.0/js/dataTables.jqueryui.min.js
- //cdn.datatables.net/2.3.0/js/dataTables.jqueryui.min.mjs
- //cdn.datatables.net/2.3.0/js/dataTables.jqueryui.mjs
- //cdn.datatables.net/2.3.0/js/dataTables.js
- //cdn.datatables.net/2.3.0/js/dataTables.material.js
- //cdn.datatables.net/2.3.0/js/dataTables.material.min.js
- //cdn.datatables.net/2.3.0/js/dataTables.material.min.mjs
- //cdn.datatables.net/2.3.0/js/dataTables.material.mjs
- //cdn.datatables.net/2.3.0/js/dataTables.min.js
- //cdn.datatables.net/2.3.0/js/dataTables.min.mjs
- //cdn.datatables.net/2.3.0/js/dataTables.mjs
- //cdn.datatables.net/2.3.0/js/dataTables.semanticui.js
- //cdn.datatables.net/2.3.0/js/dataTables.semanticui.min.js
- //cdn.datatables.net/2.3.0/js/dataTables.semanticui.min.mjs
- //cdn.datatables.net/2.3.0/js/dataTables.semanticui.mjs
- //cdn.datatables.net/2.3.0/js/dataTables.tailwindcss.js
- //cdn.datatables.net/2.3.0/js/dataTables.tailwindcss.min.js
- //cdn.datatables.net/2.3.0/js/dataTables.tailwindcss.min.mjs
- //cdn.datatables.net/2.3.0/js/dataTables.tailwindcss.mjs
- //cdn.datatables.net/2.3.0/js/dataTables.uikit.js
- //cdn.datatables.net/2.3.0/js/dataTables.uikit.min.js
- //cdn.datatables.net/2.3.0/js/dataTables.uikit.min.mjs
- //cdn.datatables.net/2.3.0/js/dataTables.uikit.mjs