NOTE!
- This widget will only work in tablesorter version 2.8+ and jQuery version 1.7+.
- Please do not use this widget in very large tables or when your table includes multiple tbodies.
- Clicking on any of the sortable header cells will cause the column below it to sort and add a group header.
- Group widget options include:
				- group_collapsible- when- truethe group headers become clickable and collapse the rows below it.
- group_count- Allows you to add custom formatting, or remove, the group count within the group header. Set it to- falseor an empty string to remove the count.
- group_months,- group_weekand- group_time- Name arrays included so that the language of the date groups can be modified easily.
 
- Group header class names (when changing the grouping, notice that the sort doesn't change, just the position and names of the group headers):
				- "group-word"(same as- "group-word-1") - group the rows using the first word it finds in the column's parsed data.
- "group-word-n"(- "n"can be any number) - group the rows using the nth word in the column*.
- "group-letter"(same as- "group-letter-1") - group the rows using the first letter it finds in the column's parsed data.
- "group-letter-n"(- "n"can be any number) - group the rows using letters 1 through n (if n = 2, then it's the first 2 letters) in the column's parsed data.
- "group-number"(same as- "group-number-1") - group the rows by the number it finds in the column (step of one).
- "group-number-n"(- "n"can be any number) - group the rows into blocks of every n values. So, if n = 10, the groups will be 0-9, 10-19, 20-29, etc
- "group-date"- group the rows by full date (this shows the current UTC time corrected for your time zone)
- "group-date-year"- group the rows by year
- "group-date-month"- group the rows by month*
- "group-date-day"- group the rows by month/day*
- "group-date-week"- group the rows by day of the week*
- "group-date-time"- group the rows by time*
 
Demo
Numeric column:Animals column:
Date column:
| Quality (number) | Numeric (every 10) | Priority (letter) | Animals (first letter) | Natural Sort (first word) | Inputs (second word) | Date (Full) | |
|---|---|---|---|---|---|---|---|
| Quality | Numeric | Priority | Animals | Natural Sort | Inputs | Date | |
| 1 | 10 | Koala | abc 123 | 1/13/2013 12:01 AM | |||
| 3 | 29 | Kangaroo | abc 1 | 1/15/2013 | |||
| 2 | 10 | Ant | abc 9 | 1/13/2013 | |||
| 3 | 81 | Bee | zyx 24 | 1/11/2013 | |||
| 3 | 21 | Aardwolf | zyx 55 | 1/13/2013 03:30 AM | |||
| 1 | 3 | Bear | abc 11 | 1/15/2013 | |||
| 4 | 12 | Armadillo | zyx 2 | 1/15/2013 12:30 PM | |||
| 2 | 56 | Aardvark | abc 2 | 1/22/2013 | |||
| 1 | 55 | Lion | abc 9 | 2/15/2013 | |||
| 4 | 87 | Anteater | ABC 10 | 1/3/2013 | |||
| 2 | 98 | Lemur | zyx 1 | 1/11/2013 | |||
| 1 | 20 | Llama | zyx 12 | 12/13/2012 | 
Page Header
<!-- Tablesorter: required -->
<link rel="stylesheet" href="../css/theme.blue.css">
<script src="../js/jquery.tablesorter.js"></script>
<!-- Grouping widget -->
<script src="../js/parsers/parser-input-select.js"></script>
<script src="../js/widgets/widget-grouping.js"></script>
<script>
$(function(){
  $("table").tablesorter({
    theme : 'blue',
    headers: {
      0: { sorter: 'checkbox' },
      2: { sorter: 'select' },
      6: { sorter: 'inputs' }
    },
    widgets: ['group'],
    widgetOptions: {
      group_collapsible : true, // make the group header clickable and collapse the rows below it.
      group_count       : ' ({num})', // if not false, the "{num}" string is replaced with the number of rows in the group
      // change these default date names based on your language preferences
      group_months      : [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ],
      group_week        : [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ],
      group_time        : [ 'AM', 'PM' ],
      group_formatter   : function(txt, col, table, c, wo) {
        // txt = current text; col = current column
        // table = current table (DOM); c = table.config; wo = table.config.widgetOptions
        if (col === 7) {
          // remove "GMT-0000 (xxxx Standard Time)" from the end of the full date
          txt = txt.substring(0, txt.indexOf('GMT'));
        }
        return txt === "" ? "Empty" : txt;
      }
    }
  });
});</script>