Jquery tablesorter通过两个字段排序

时间:2013-02-02 15:57:44

标签: javascript jquery tablesorter

我有这样的html表: 在这里:http://jsfiddle.net/zrjaM/1/

这样的js用于排序:

$(document).ready(function() { 
    $(".sortable") 
    .tablesorter({sortList: [[4,0]], widgets: ['zebra']});
}); 

但我需要通过第0列排序......我写道:

$(document).ready(function() { 
        $(".sortable") 
        .tablesorter({sortList: [[0,0],[4,0]], widgets: ['zebra']});
    }); 

但它很奇怪......

另外我需要这样做,价格值(第4列)的tr是最重要的,但现在,当我只按价格排序时 - 一切都好,但是当通过两列时,我可以有价格的tr在最后或中间......如何将它们发送到顶部,然后通过0-th排序,然后通过排序器按0排序通过4-t列....如何做?

2 个答案:

答案 0 :(得分:2)

即使没有将ZZZZZZZ添加到空单元格的代码,

@ charlietfl的解决方案也能正常工作。但由于该演示使用的是原始版本的tablesorter,因此必须删除第一个tbody。

但是,因为看起来您使用的fork of tablesorter允许sorting multiple tbodies,所以您需要做的就是将emptyTo option设置为none

默认情况下,emptyTo选项设置为bottom。所以所有空单元格总是排在最底层。第三列看起来不像是排序的原因是因为该列中的所有链接都具有相同的文本。这是demo

更新:同时从第四列中移除tablesorter-headerSortDown,它仍然在css中,但插件现在正在使用tablesorter-headerDesc

答案 1 :(得分:1)

我想出了一个可能的解决方案。

首先检查行没有价格,如果没有价格在第一列中的项目名称之前添加隐藏跨度,则在其中添加文本ZZZZZZZ。这将强制所有ZZZZZZZ项目到底,并在第一行上获得双重排序

$('tbody tr').each(function(){
    if( $.trim( $(this).find('td').eq(4).text())==''){
       $(this).find('td').eq(0).prepend('<span style="display:none">ZZZZZZZZ</span>')
       }
});

$(".sortable") .tablesorter({
      sortList: [[0,0],[4,0]], widgets: ['zebra']});
}); 

DEMO:http://jsfiddle.net/zrjaM/6/