tablesorter (FORK) 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.
Download
- Get all files
- Use bower:
bower install jquery.tablesorter
- Use node.js:
npm install tablesorter
- CDNJS: https://cdnjs.com/libraries/jquery.tablesorter
Related Projects
- Plugin for Rails. Maintained by themilkman.
- Bootsole (OOP templating engine using tablesorter) by alexweissman.
Contributing
If you would like to contribute, please...
- Fork.
- Make changes in a branch & add unit tests.
- Run
grunt test
(if qunit fails, run it again - it's fickle). - Create a pull request.
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.
- Thanks to prijutme4ty for numerous contributions!
- 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
#tablesorter
IRC 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.21.2 (3/13/2015)
- Core: get accurate column count. Fixes issue #840.
- Docs
- Update to use jQuery UI v1.11.4.
- Add note about resizable widget needing a non-breaking space in an empty cell. Fixes issue #844.
- Editable: fix editable not updating properly on update/pager complete.
- Filter: prevent error if
parseFilter
returnsNaN
- this depends on what custom parsers return. - Output: change carriage returns & tabs to unicode equivalent so it works in Excel. Fixes issue #845.
- Pager
- Don't recalculate total rows/pages if using ajax.
- Remove outdated pager.min file in the
addons
folder; it is now available in thedist/js/extras
folder.
- Uitheme: add icon classes while using stickyHeaders. See issue #842.
Version 2.21.1 (3/10/2015)
- Core:
- Optimize
getColumnData
function. - Use
:last
instead of.last()
to maintain jQuery v1.2.6 compatibility. - Allow multiple icon class names in the
cssIcon
definition.
- Optimize
- Docs
- Remove initial sort on first table to avoid confusion.
- Miscellaneous tweaks.
- Build
- Scroller
- Properly adjust column widths; fixes issue #836.
Version 2.21.0 (3/5/2015)
- Core
- Plan to manually update vesion number.
- Optimizations: replace arrays using
$.each
with for loops. Fixes issue #827. - Add
$.tablesorter.addInstanceMethods
function.- This allows one to define config object instance methods (docs).
- Thanks to prijutme4ty for contributing!
- Add
config.$headerIndexed
option (docs).
- Docs
- Update link in readme.
- Add contributing information.
- Update download method information.
- Build/Testing
- Move jshint to "grunt test" task.
- Attempt to make nested callbacks more stable.
- Clean up testing & made more stable, by prijutme4ty.
- ColumnSelector
- Add more debug logging.
- Filter
- Add more debug logging.
- Add
config
parameter tofilter_functions
. - Add "widget-filter-type-insideRange.js" filter type; this filter type allows searching for a value that is within a range (demo).
- External filters can now set initial values; this includes match-any-column inputs.
- Extend filterFormatter functions - fixes an issue where HTML5 & jQuery ui filterFormatters override the function definitions.
- Output
- Add
output_includeFooter
option.
- Add
- Pager
- Add more debug logging.
- Scroller
- Add missing
tfoot
rows. Fixes issue #825.
- Add missing
- StickyHeaders
- Now works properly with a full-height wrapper. Fixes issue #564.
- Add stickyHeader hidden class name & modal demo links. Fixes issue #832.