addons/pager | ||
beta-testing | ||
css | ||
docs | ||
js | ||
testing | ||
.gitattributes | ||
.gitignore | ||
bower.json | ||
changelog.txt | ||
index.html | ||
package.json | ||
README.md | ||
tablesorter.jquery.json | ||
test.html |
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
#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.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
serverSideSorting
istrue
. Fixes issue #764. - Add
resort
option. It is used as the fallback value when no resort parameter is included with the "updateAll", "update", "addRows" and "updateCell" methods. - Add
removeWidget
function which calls the widgetremove
function & removes the named widget from theconfig.widget
option. - A
refreshing
parameter was added to the widget remove function; whentrue
it indicates that arefreshWidgets
method 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
textExtraction
function has been optimized -node.innerText
was 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
refreshWidgets
to use theremoveWidget
function. Once the widgets have been refreshed a"refreshComplete"
event will be triggered. - Updated
applyWidget
function to allow passing a callback function. - Prevent adding multiple icons on refresh.
- Trim header text added to aria label.
- The
updateAll
method 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
pageSet
method requires a one-based index value. - Miscellaneous corrections & fixes. Thanks prijutme4ty!
- Remove
uitheme
widget 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 coretheme
documentation. - 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
getColumnData
function.
- Specify pager's
- Parsers
- Add countdown parser (hh:mm:ss) - demo included with the duration parser.
- Update input-select parser to use the
resort
option.
- Widgets (general)
- Build widget & storage extension: Pass
"null"
to$.parseJSON
as a fallback. Fixes issue #586. - Update
remove
widget 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
refreshColumnSelector
method 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_columnsArray
which is created from theeditable_columns
option. Wheneditable_columns
contains 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
filtered
class 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
table
parameter 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
pageReset
now used while filtering. See issue #778.- Get most up-to-date filter before setting
pageReset
. Fixes issue #783. filteredRows
now properly calculated when firsttbody
is set with acssInfoBlock
class name`.- Page size resets to original page setting instead of always 10.
- Add
pageAndSize
method to set both the page & size. - Add
pagerUpdate
method to force a pager update; even if no ajax parameters have changed. Fixes issue #801. - Add
cachedIndex
variable 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_mediaquery
option 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.theme
option. - 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 thehideme
class 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
cssIgnoreRow
docs.
- Core
- Add
cssIgnoreRow
option. Added to a header row that is to be ignored & not added to theconfig.$headers
variable. - Allow passing alternate headers to
getColumnData
function.
- Add
- ColumnSelector widget
- Add
columnUpdate
event when columnSelector is updated. - Add
columnSelector_cssChecked
option - css class name added to checkboxes.
- Add
- Pager (addon & widget)
- Ensure
filteredRows
variable gets updated before the move to page function is called. Fixes issue #778.
- Ensure
- StickyHeaders widget
- Make
includeCaption
option 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.
Version 2.18.3 (11/7/2014)
- Core
- Add class names to the header icons:
cssIconNone
,cssIconAsc
&cssIconDesc
to indicate the sort status. - The
widthFixed
option will no longer target nested tablecolgroup
elements to determine if it needs to add a newcolgroup
.
- Add class names to the header icons:
- Docs
- Updated Bootstrap theme example.
- Pager widget option comment corrections.
- Themes: update all themes to hide all elements in the filter row when the
filter_hideFilters
option istrue
- CssStickyHeaders widget: tables with a caption now work properly in Firefox.