Chad Birch Chad Birch - 1 month ago 11
jQuery Question

Exclude a column from being sorted using jQuery tablesorter

I am looking for a way to exclude a single column from being sorted using jQuery's tablesorter plugin. Specifically, I have a fairly large table and would like to keep a "row number" column fixed so that it is easy to see what position in the table a particular row is, after sorting.

For example:

# name
-----------
1 papaya
2 apple
3 strawberry
4 banana


When sorted on the name column, should result in:

# name
-----------
1 apple
2 banana
3 papaya
4 strawberry


Thanks.

Answer

Here is a widget you can use that will accomplish what you are looking for:

$(function() {
    // add new widget called indexFirstColumn
    $.tablesorter.addWidget({
        // give the widget a id
        id: "indexFirstColumn",
        // format is called when the on init and when a sorting has finished
        format: function(table) {               
            // loop all tr elements and set the value for the first column  
            for(var i=0; i < table.tBodies[0].rows.length; i++) {
                $("tbody tr:eq(" + i + ") td:first",table).html(i+1);
            }                                   
        }
    });

    $("table").tablesorter({
        widgets: ['zebra','indexFirstColumn']
    });

});
Comments