更改表的方式是对jquery tablesorter进行排序

时间:2012-12-18 13:03:49

标签: javascript jquery tablesorter

我正在使用jquery tablesorter来排序我的表。我试图谷歌我的问题,没有找到我在找什么。

我有一个表格内容会动态变化,所以我想改变项目的排序方式。

一个案例我已经填充了文本表,可以使用默认.tablesorter()进行分类,我还有另一种情况,表中有数字,所以我需要像这样调用tablesorter:

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

我有一个方法可以重新加载到表内容中的数字/文本之间的表切换,如何更改表的排序方式。

在示例中(伪代码):

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

我可以使用文本/数字重新加载表数据n次。

我尝试了以下内容:

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();
}

毋庸置疑,它不起作用,我希望之前有人这样做过,我现在已经停留了一段时间。

2 个答案:

答案 0 :(得分:1)

所以它不起作用,因为你正在重新表达桌子上的tableorter?在重新绑定之前,您可以尝试取消绑定tablesorter。

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

查看Remove jQuery tablesorter from table

答案 1 :(得分:0)

我认为你正在寻找这个 - 你需要MetatData plugin让这些课程更像"{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; 
});