Changing the way table is sorted jquery tablesorter

青春壹個敷衍的年華 提交于 2019-12-12 01:34:05

问题


I'm using jquery tablesorter to sort my table. I've tried to google my question, didn't find what I was looking for.

I've got a table which content changes dynamically so I want to change the way items are sorted.

One case I've got table populated with text which can be sorter with default .tablesorter() and I've got another case where digits are in table so I need to invoke tablesorter like this :

$('table').tablesorter({
        headers : { 
                0 : {sorter:'digit'},
                1 : {sorter:'digit'},
                2 : {sorter:'digit'},
                3 : {sorter:'digit'}
        }
    });

I have a method that does reload to table switching between numbers/text in table content, how can I change the way table is sorted.

In the example (pseudocode):

function reloadTableData
if table contains numbers user this tablesorter (I have a way to know if table contains numbers) 
$('table').tablesorter({
            headers : { 
                    0 : {sorter:'digit'},
                    1 : {sorter:'digit'},
                    2 : {sorter:'digit'},
                    3 : {sorter:'digit'}
            }
        });
if table contains text use ordinary table sorter 
$('table').tablesorter();
end

I can reload table data n times with either text/numbers.

I've tried the following :

function initTablesorter(n) {

    switch(n)
    {
    case "number":
      digitTableSorter();
      break;
    case "text":
     defaultTableSorter();
      break;
    default:

    }
}

function digitTableSorter(){
$('table').tablesorter({
        headers : { 
                0 : {sorter:'digit'},
                1 : {sorter:'digit'},
                2 : {sorter:'digit'},
                3 : {sorter:'digit'}
        }
    });
}

function defaultTableSorter(){
$('table').tablesorter();
}

Needless to say it's not working, I hope someone did something like this before, I'm stuck for some time now.


回答1:


So is it not working because you are reinitialising tablesorter on a table? You may try to unbind tablesorter before rebinding it.

$('table')
 .unbind('appendCache applyWidgetId applyWidgets sorton update updateCell')
 .removeClass('tablesorter')
 .find('thead th')
 .unbind('click mousedown')
 .removeClass('header headerSortDown headerSortUp');

Have a look at Remove jQuery tablesorter from table.




回答2:


I think you are looking for this - You will need MetatData plugin to get the th classes to like "{sorter: 'digit'}"

http://tablesorter.com/docs/example-trigger-sort.html

 $("#trigger-link").click(function() { 
    // set sorting column and direction, this will sort on the first and third column the column index starts at zero 
    var sorting = [[0,0],[2,0]]; 
    // sort on the first column 
    $("table").trigger("sorton",[sorting]); 
    // return false to stop default link action 
    return false; 
}); 


来源:https://stackoverflow.com/questions/13933681/changing-the-way-table-is-sorted-jquery-tablesorter

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!