Package Exports
- tablesorter
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (tablesorter) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
tablesorter is a jQuery plugin for turning a standard HTML table with THEAD and TBODY tags into a sortable table without page refreshes. tablesorter can successfully parse and sort many types of data including linked data in a cell.
Notice!
- Because of the change to the internal cache, the tablesorter v2.16+ core, filter widget and pager (both plugin & widget) will only work with the same version or newer files.
Documentation
- See the full documentation.
- All of the original document pages have been included.
- Information from my blog post on undocumented options and lots of new demos have also been included.
- Change log moved from included text file into the wiki documentation.
Demos
- Basic alpha-numeric sort Demo.
- Links to demo pages can be found within the main documentation.
- More demos & playgrounds - updated in the wiki pages.
Features
- Multi-column alphanumeric sorting and filtering.
- Multi-tbody sorting - see the options table on the main document page.
- Supports Bootstrap v2 and 3
- Parsers for sorting text, alphanumeric text, URIs, integers, currency, floats, IP addresses, dates (ISO, long and short formats) & time. Add your own easily.
- Inline editing - see demo
- Support for ROWSPAN and COLSPAN on TH elements.
- Support secondary "hidden" sorting (e.g., maintain alphabetical sort when sorting on other criteria).
- Extensibility via widget system.
- Cross-browser: IE 6.0+, FF 2+, Safari 2.0+, Opera 9.0+, Chrome 5.0+.
- Small code size, starting at 25K minified
- Works with jQuery 1.2.6+ (jQuery 1.4.1+ needed with some widgets).
- Works with jQuery 1.9+ ($.browser.msie was removed; needed in the original version).
Licensing
- Copyright (c) 2007 Christian Bach.
- Original examples and docs at: http://tablesorter.com.
- Dual licensed under the MIT and GPL licenses.
Related Projects
- Plugin for Rails. Maintained by themilkman.
- Bootsole (OOP templating engine using tablesorter) by alexweissman.
Special Thanks
- Big shout-out to Nick Craver for getting rid of the
eval()function that was previously needed for multi-column sorting. - Big thanks to thezoggy for helping with code, themes and providing valuable feedback.
- Big thanks to ThsSin- for taking over for a while and also providing valuable feedback.
- Also extra thanks to christhomas and Lynesth for help with code.
- And, of course thanks to everyone else that has contributed, and continues to contribute to this forked project!
Questions?
- Check the FAQ page.
- Search the main documentation (click the menu button in the upper left corner).
- Search the issues to see if the question or problem has been brought up before, and hopefully resolved.
- If someone is available, ask your question in the
#tablesorterIRC channel at freenode.net. - Ask your question at Stackoverflow using a tablesorter tag.
- Please don't open a new issue unless it really is an issue with the plugin, or a feature request. Thanks!
Recent Changes
View the complete change log here.
Version 2.19.1 (2/9/2015)
- Core
- Replace all double quote with a single - OCD made me do it!
- Save raw table cell text (unparsed) into the cache.
- Core/Widgets
- Fix a problem with event unbinding when using jQuery versions 1.7 & 1.8.
- When an
unbind(oroff) event string contains an untrimmed or central double space, all events on the element become unbound. - See jQuery bug or this demo.
- Updated the core, and the cssStickyHeaders, editable, filter, formatter, math, pager (addon & widget), staticRow widgets and stickyHeaders widgets.
- Chart
- Add more data points.
- Filter
- Add a second custom filter search type example which allows finding if the query number is within a range.
- Math
- Add
math_eventoption.
- Add
- StaticRow
- Add
staticRow_eventoption.
- Add
Version 2.19.0 (2/7/2015)
- Core
- Add AMD/browserify support; See pull #786, thanks to mwiencek!
- Resort variable can now contain a new sort. See issue #782.
- Prevent resort when
serverSideSortingistrue. Fixes issue #764. - Add
resortoption. It is used as the fallback value when no resort parameter is included with the "updateAll", "update", "addRows" and "updateCell" methods. - Add
removeWidgetfunction which calls the widgetremovefunction & removes the named widget from theconfig.widgetoption. - A
refreshingparameter was added to the widget remove function; whentrueit indicates that arefreshWidgetsmethod was triggered and that the widget will only be temporarily removed. - Make fixColumnWidth a public function (
$.tablesorter.fixColumnWidth). Calling it will refresh set column widths dynamically. See issue #680. - The default
textExtractionfunction has been optimized -node.innerTextwas completely removed as it is significantly slower in IE. - Modified the "updateCell" method to not reapply widgets if the resort parameter is
false; this may resolve issue with widgets causing elements to lose focus. - Updated the
refreshWidgetsto use theremoveWidgetfunction. Once the widgets have been refreshed a"refreshComplete"event will be triggered. - Updated
applyWidgetfunction to allow passing a callback function. - Prevent adding multiple icons on refresh.
- Trim header text added to aria label.
- The
updateAllmethod no longer restores headers since it is only refreshing. - Fix parser check while building cache which can cause unresolving parsers in case the first tbody is empty and remaining tbodies have less rows than a number of tbody. See pull #814. Thanks prijutme4ty!
- Docs
- Specify pager's
pageSetmethod requires a one-based index value. - Miscellaneous corrections & fixes. Thanks prijutme4ty!
- Remove
uithemewidget option (it was removed in v2.14.0, but not properly documented). Pertinent information on how to modify the uitheme widget class names was moved to the corethemedocumentation. - Add a new pager variables section which contains some useful variables within the pager object (
table.config.pager). - Update "jQuery data" demo to show the difference between setting a data-attribute and jQuery data directly.
- Add api documentation for using the
getColumnDatafunction.
- Specify pager's
- Parsers
- Add countdown parser (hh:mm:ss) - demo included with the duration parser.
- Update input-select parser to use the
resortoption.
- Widgets (general)
- Build widget & storage extension: Pass
"null"to$.parseJSONas a fallback. Fixes issue #586. - Update
removewidget function for columnSelector, cssStickyHeaders, math, pager, repeatHeaders, saveSort & stickyHeaders. - Widgets removed from beta: alignChar, columnSelector, math, output, print, reflow & staticRow.
- Build widget & storage extension: Pass
- AlignChar:
- Don't add align character when no content is right of it. Prevents adding a hanging decimal, e.g.
3000..
- Don't add align character when no content is right of it. Prevents adding a hanging decimal, e.g.
- Chart widget (New; beta):
- Generic chart widget used to basically extract data from the table and output in multiple formats.
- Current chart libraries supported: Google charts, Highcharts & FusionCharts.
- Some additional processing may be required to add extra variables (graph colors, labels, etc).
- A demo is available here.
- An example of this widget is also available here.
- Thanks to TheSin- for creating this widget!
- ColumnSelector:
- Fix column index issue, again.
- The
refreshColumnSelectormethod has been updated to accept a parameter (get more details):- If an array of zero-based column indexes is passed by this method, "auto" mode will be disabled & only columns within the array will be shown - critical or disabled columns will always be shown.
- If a non-array is passed by this method, the "auto" mode will be enabled.
- Fixes issue #798.
- A change in "auto" checkbox now triggers a "columnUpdate" event.
- Dragtable (New; beta)
The dragtable jQuery UI widget adds column reordering to a table.
This isn't a tablesorter widget, but a modification made to a jQuery UI widget to better integrate with tablesorter - demo.
A modified version of dragtable has been included in the "extras" folder; this is a jQuery UI widget, not a tablesorter widget!
$(function () { $('table') .dragtable({ dragHandle: '.table-handle', excludeFooter: true }) .tablesorter({ theme: 'blue', selectorSort: '.sort', widgets: ['zebra', 'filter'] }); });
This modified version, so far, allows column reordering to work with the filter & resizable widgets.
Additional work will be required to get this jQuery UI widget to work with the scroller, columnSelector & stickyHeaders widgets.
- Editable
- Update to add a
editable_columnsArraywhich is created from theeditable_columnsoption. Wheneditable_columnscontains a string (e.g.0-3), this option will contain an array of zero-based column indexes. - The dragtable mod widget can then use this option to rearrange and maintain editable columns properly.
- Update to add a
- Filter
- Hide filter row using the
filteredclass name (table.config.widgetOptions.filter_filteredRow). - Select source, and unparsed filter text now priorities data from the
textAttribute. Fixes issues with Formatter widget - see issue #812. - Update select2 filterFormatter code to properly escape regexp characters. Fixes issue #796.
- Normalize
tableparameter for public functions.
- Hide filter row using the
- Formatter (New; beta)
- This new widget allows you to apply formatting to the columns (demo).
- Fixes issue #812.
- Output
- Fix trim spaces for header cells.
- Pager
pageResetnow used while filtering. See issue #778.- Get most up-to-date filter before setting
pageReset. Fixes issue #783. filteredRowsnow properly calculated when firsttbodyis set with acssInfoBlockclass name`.- Page size resets to original page setting instead of always 10.
- Add
pageAndSizemethod to set both the page & size. - Add
pagerUpdatemethod to force a pager update; even if no ajax parameters have changed. Fixes issue #801. - Add
cachedIndexvariable which is useful if you need to find the currently visible rows within the pager in the internal cache (table.config.cache). See the documentation for an example. - Update goto selector independently of other elements. Fixes issue #811.
- Modified to apply widgets & fire "pagerComplete" after the cache is built; this specifically applies to ajax tables.
- Print
- Ignore columnSelector "auto" setting when
columnSelector_mediaqueryoption is disabled (false). Fixes issue #808.
- Ignore columnSelector "auto" setting when
- Reflow
- Trim stored header text.
- Scroller
- UITheme
- Now updates properly when dynamically changing the
table.config.themeoption. - During an update, add inner wrapper to specific columns that are missing it.
- Add separate sort class names to both the header & icon element; breaks old demos, but falls in-line with the addition of core css icon class settings in v2.18.3.
- Now updates properly when dynamically changing the
- Themes
- Add filter row background color; it appears that Chrome uses the
<tr>background color when thehidemeclass is added to the row. - Updated Bootstrap to 3.3.2.
- Add filter row background color; it appears that Chrome uses the
- Testing
- Update QUnit.
- Remove jsHint checks.
Version 2.18.4 (12/22/2014)
- Docs
- Add link to demo showing how to apply jQuery selectmenu widget to a filter
- Update theme switcher linked styles
- Add clarification on using jQuery selectors that target the header cell. Fixes issue #766.
- Fix various typos. Thanks seanhussey!
- Add
cssIgnoreRowdocs.
- Core
- Add
cssIgnoreRowoption. Added to a header row that is to be ignored & not added to theconfig.$headersvariable. - Allow passing alternate headers to
getColumnDatafunction.
- Add
- ColumnSelector widget
- Add
columnUpdateevent when columnSelector is updated. - Add
columnSelector_cssCheckedoption - css class name added to checkboxes.
- Add
- Pager (addon & widget)
- Ensure
filteredRowsvariable gets updated before the move to page function is called. Fixes issue #778.
- Ensure
- StickyHeaders widget
- Make
includeCaptionoption dynamic; add note of new jQuery requirement. - Add popup window demo to sticky headers example.
- Make
- Themes
- Style filter input & selects only.
- Only style
<i>tags from tablesorter on theme Bootstrap v2 & less file. Thanks frodrigo! - Modify theme Dropbox & grey to also only target icon class name for css styling.