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.
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.
 
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!
 
Change Log
View the complete listing here.
Version 2.15.10 (3/13/2014)
- Fix 
numberSorteroption causing a javascript error & added test. 
Version 2.15.9 (3/12/2014)
- jQuery UI Filter formatter scripts work again (broken since adding unique namespaces in v2.15.7).
 
Version 2.15.8 (3/12/2014)
- 
Filter widget
 - 
Align Character widget (beta)
- Added this widget to help align cell content on a character (space, decimal, etc).
 - Check out the demo!
 
 
Version 2.15.7 (3/9/2014)
- 
Core
- Minor natural sort algorithm optimization
 - Added 
namespacewhich should contain a unique namespace for each table; it is used when binding to event listeners. 
 - 
Build table widget
- Removed inappropriate empty table console message when initializing.
 - build table widget documentation update (includes 
<head>scripts & css) - Fixed nested accordions
 
 - 
Column selector widget
- Setting the 
columnSelector_saveColumnsoption totruenow saves the "auto" state. Fixes issue #517. 
 - Setting the 
 - 
Filter widget
- Use the new 
namespaceoption to use with event listeners. Fixes issue #535. 
 - Use the new 
 - 
headerTitles widget
- Sorry for all of these breaking changes, I should have left this widget in beta.
 - The 
headerTitle_prefix,headerTitle_text,headerTitle_numericoptions has been replaced, in lieu of the new ouput options; sorry for no deprecation notice. - Added 
headerTitle_useAria,headerTitle_tooltip,headerTitle_output_sorted,headerTitle_output_unsorted,headerTitle_output_nosort,headerTitle_cur_text,headerTitle_cur_numeric,headerTitle_nxt_text,headerTitle_nxt_numeric,headerTitle_type&headerTitle_callbackoptions. See the headerTitles widget demo for more details. - Added 
"refreshHeaderTitle"method to force the widget to update. 
 
Version 2.15.6 (3/7/2014)
- 
Doc
- Added docs for 
$.tablesorter.languagewhich contains the text used in thearia-labelfor the header - Update 
isValueInArray&sortAppenddocs. 
 - Added docs for 
 - 
Core
- Destroy now unbinds the 
updateCachemethod properly - Update 
$.tablesorter.isValueInArrayfunction &sortAppendoption. Fixes issue #523. - All test dates are now time zone & DST independent. Fixes issue #516.
 - Added tests for 
sortForce,sortAppend,sortMultiSortKeyandsortResetKey. - Cache natural sort regex.
 - Date parsers now return the original cell text instead of an empty string when encountering invalid dates. Sort of fixes issue #531.
 - Event fixes:
- Sort events will now only show when the table is being sorted; previously when updating an unsorted table, sort events would fire.
 - The 
updateCompleteevent now fires after every triggered update (update,updateRows,updateAll,updateCell&addRows) - Updated pager to correctly trigger the 
updateCompleteevent when using ajax. - Added unit tests to ensure these events fire on an empty table.
 - Fixes issue #532
 
 
 - Destroy now unbinds the 
 - 
ColumnSelector widget
- Make column disable, visible & invisible methods consistent. Fixes issue #519
 
 - 
Filter widget
- Preset filter searches (set by 
data-valueon the header) work again. Fixes issues #511 & #525. - Add note to docs about adding a placeholder. Fixes issue #522.
 - Filter build select function no longer causes a javascript error on empty tables. Fixes issue #528.
 
 - Preset filter searches (set by 
 - 
Grouping widget
- The 
collapsedoption once again shows the group headers. Fixes issues #514 & 533 - Add 
group_saveGroups&group_saveResetoptions:- The 
group_saveGroupsoption (trueby default) saves the group name of any collapsed groups (requiresgroup_collapsibleto betrue) - The 
group_saveResetoption (nullby default) contains a jQuery selector string or jQuery object pointing to an element to be used to clear the saved groups. - Both of these options require the storage utility script contained within the 
jquery.tablesorter.widgets.jsfile. - Fullfils feature request of issue #514.
 
 - The 
 - Added details about using regular expressions within the 
group_separatoroption. 
 - The 
 - 
Header Titles widget (headerTitles)
- New widget which adds the current sort to the header title attribute.
 - It distinguishes between a text and numeric sort and includes the current sort direction
 - A prefix can be included.
 - By default, an ascending sort shows either "A - Z" or "0 - 9", or "Z - A" or "9 - 0" for descending sorts.
 - Note that date columns will show as numeric
 - Fixes issue #529.
 
 - 
Pager (addon & widget)
- Ensure empty array 
[]and array of empty strings['', '', '']evaluate as the same when checking if the filters have changed. Fixes issue #202 (again). - Compare 
totalRowsvs.totalPageswhen preventing an ajax call. - Changes to make the 
updateCompleteevent fire, but because of the asynchronous nature of ajax, it fires before anysortEndevents. It may take some more work to resolve this, if it becomes a concern. - Attempted to fix pager row count issue. See issue #455.
 
 - Ensure empty array 
 - 
Miscellaneous
- Pager custom controls (beta) now shows no pages on a single page. Fixes issue #518
 - Increase Bootstrap 3 theme css specificity. See issue #515
 - Checkbox parser no longer causes a js error when a checkbox doesn't exist.
 
 
Version 2.15.5 (2/23/2014)
- Pager widget now initializes properly when using ajax. Fixes issue #510.