DataTables 1.10.8

DataTables CDN files for DataTables 1.10.8. This software was originally released on 12th August, 2015.

Release notes

It has been a few months since the last DataTales release, so this one is a bit overdue while work has been progressing on the new and revamped extensions (see the DataTables blog). The changes in this release of DataTables either primarily to support the new extensions, or to address issues found since the last release.

The biggest change is to optimise how DataTables handles row id selectors. These will now work even when deferRender is enabled and it is possible to set the property that should be used to treat as the row id (rather than just the static value of DT_RowId as it was before).

The other major change is that the integration files for the styling frameworks that DataTables supports (Bootstrap, Foundation and jQuery UI currently) have been moved into the source repository. This helps to ensure that they are fully supported as new features are added to DataTables.

DataTables core


  • New: Optimised ID selectors - Also works when rows have not yet been rendered.
  • New: draw() now accepts a string parameter which can be used to perform a simple redraw without the need to reorder / research the table. This is useful for paging where, otherwise, it would be a performance hit.
  • New: includes a new parameter to indicate if server-side processing is being used or not for the table
  • New: $.fn.dataTable.tables() can now return an API instance which makes for easy chaining to call methods on the selected tables. This is done by now being able to provide an object (providing two booleans is confusing unless you have the manual right next to you!)
  • New: preInit event - emitted while a table is being initialised, allowing developers to modify the data being requested by DataTables for the first draw of the table. Used by Scroller 1.3.0 and likely will be by other extensions soon.
  • New: rowId option to specify what property should be used from the row's data source object to read the row's id and then set it as the DOM id (previously this was static as the DT_RowId option)
  • New: row().id() and rows().ids() to get the id from one or multiple rows, based on the new rowId option
  • New: count() method. This provides a short cut method to determine how many items have been selected by the API. This can be useful to count the number of selected rows, etc.
  • New: Add numbers paging option for pagingType to round off the full set of basic options
  • New: The rows().every(), columns().every() and cells().every() methods are now passed index and loop counter parameters
  • New: Add postfix option to the number renderer option


  • Fix: Calculation for horizontal scroll bar adjustment when the scrollCollapse parameter is set could be incorrect when the standard height exceeds the window height.
  • Fix: Horizontal scrolling could incorrectly be triggered in Firefox when there is lots of room available and scrolling is not required. This was due to sub-pixel rendering of the columns, but the widths being rounded up to integer values. Using getBoundingClientRect addresses this. IE8- have to continue using the old method.
  • Fix: The auto width calculation table, when scrolling is enabled, being inserted into the scrolling container could cause the viewport to scroll, even when the main table doesn't actually need scrolling. This causes the column width calculations to be incorrect by the scrollbar's width. The fix is to have the calculation table position:absolute in the scrolling container and height:1px so it has no effect on the vewport's scrolling.
  • Fix: If deferRender was enabled, the init event wouldn't trigger until after the table's second draw.
  • Fix: Simplification and improvement of table widths when scrolling
  • Fix: Table could over scroll if data is used to populate the table
  • Fix: Mixed tabs and spaces
  • Fix: Multiple tables on the same page could result in focus jumping between elements using the tab key
  • Fix: Validate the JSONP callback as a valid Javascript function
  • Fix: If the HTML BODY is offset (used by some virtual renderers), the scrollbar detection could report an incorrect result
  • Fix: Potential memory leak when using static events on table elements and destroying tables
  • Fix: Row details could potentially throw an error if used on an row that doesn't exist (might have been removed)
  • Fix: Initialisation on an element other than table would result in a Javascript error
  • Fix: Event handlers in table headers in IE8 could be removed form child nodes
  • Fix: ajax.reload() should cancel an existing request if that request has not yet completed
  • Fix: If the paging language options were set to be an empty string, the button wouldn't render. This is not correct as it doesn't allow CSS icons to be used rather than the strings.
  • Fix: Compatibility with jQuery 2.1.4 when using $.map and passing in only arrays
  • Fix: scrollX could not be given as false - it still enabled x-scrolling
  • Fix: Disabling smart column width for IE67 as it can cause the browser to crash
  • Fix: When scrolling is enabled and column visibility is toggled a Javascript error would occur due to the column width calculation method cloning the wrong header element.



  • New - styling: Bootstrap, Foundation and jQuery UI styles are now all included in DataTables core repository


  • Update - styling: Altering the paging buttons to have a styling that is consistent with the Buttons extension. This is just a darkening of the active border and a small border radius.
  • Update - styling: Use the new draw() option of page to improve performance in Bootstrap and Foundation


  • Fix - styling: Bootstrap uses vertical-align: bottom for table header cells, so it makes sense to position the sort icons from the bottom of the cell.
  • Fix - styling: Misalignment in the main table when in responsive sizes for Bootstrap styled tables
  • Fix - styling: Foundation sets border-box for the table cells which can cause the columns to be misaligned when scrolling. CSS is uses to set the table cells to be a content-box.



  • New - example: Scrolling example with dynamic height using the vh CSS unit


  • Update - examples: Improve descriptions of examples and refer to the new extensions where appropriate
  • Update - examples: Use Bootstrap rather than jQuery UI for the scrolling and tabs example.
  • Update - examples: All examples now use $().DataTable() to construct the table.
  • Update - examples: Remove jQuery UI themed scrolling example
  • Update - examples: Scrolling example updated to use the nowrap class to prevent wrapping of content and thus force scrolling


  • Fix - examples: Pipelining description had a typo
  • Fix - examples: Comment about columns.orderData incorrectly stated that the sort direction could be specified.
  • Fix - examples: Syntax highlighting large JSON data sets can take a long time making DataTables look really slow. This just allows the table to render first
  • Fix - examples: Server-side processing data source example column titles were incorrect
  • Fix - examples: Typo in description of dom example
  • Fix - examples: Example pages styling updated to work better when operating with Bootstrap and Foundation styled table examples



  • Update - docs: Add information about the Select extension to the selector-modifier data type


  • Fix - docs: tables() static method was missing a parameter due to an XML error
  • Fix - docs: Typo in ajax example description
  • Fix - docs: ajax.url() description was incorrect
  • Fix - docs: Typo in description of createdRow example
  • Fix - docs: columns() incorrect argument type for column selector
  • Fix - docs: column().index() incorrect return type was documented
  • Fix - docs: rows().every() example was missing a parameter
  • Fix - docs: example for JSON in the body needed a POST parameter
  • Fix - docs: rows().every() example was missing a parameter
  • Fix - docs: headerCallback typo in example
  • Fix - docs: Typo in description of state.clear()
  • Fix - docs: Example for columns().visible() had a syntax error due to an unescaped '
  • Fix - docs: Add examples for columns.defaultContent showing how it can be used with null or undefined content
  • Fix - docs: example JSON had a parsing error
  • Fix - docs: iterator()'s table option is given a loop counter like the other iterators
  • Fix - docs: Typo in cell().render() descrition
  • Fix - docs: Error in DataTables.Settings example code
  • Fix - docs: Typo in child row documentation
  • Fix - docs: Incorrect comment for processing example
  • Fix - docs: row().node() example function error
  • Fix - docs: row.add() and rows.add() will accept tr elements