2013-02-02 92 views
0

的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']}); 
    }); 

,但它的工作原理奇怪...

一所以我需要這樣做,價格(第四列)的tr是最高的,但現在,當我只按價格排序 - 一切正常,但是當通過兩列時,我可以以最終價格買到tr或中間....如何將它們發送到頂部,然後通過第0個排序,然後通過分揀機第0個排序通過4-t列....如何做?

+0

如果沒有包含插件和初始化腳本,演示並沒有太多的好處。我們如何看看問題是什麼? – charlietfl

+0

@charlietfl更新小提琴....但它沒有排序,不知道爲什麼 – brabertaser19

+1

語法問題,缺少逗號,應該是'[[0,0],[4,0]]'。你有2'tbody'這是問題。不確定排序問題是什麼。代碼按預期工作http://jsfiddle.net/zrjaM/3/第二種價格只會改變第一列中具有相同值的項目。不知道你期待什麼。如果您需要更高級的過濾,請查看'datatables.js' – charlietfl

回答

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/

2

@ charlietfl的解決辦法,即使不工作的代碼添加ZZZZZZZ空單元。但由於該演示使用的是原始版本的tablesorter,因此必須刪除第一個tbody。

但是,因爲它看起來像你使用我的fork of tablesorter,這確實允許sorting multiple tbodies,所有你需要做的是設置emptyTo optionnone

默認情況下,emptyTo選項設置爲bottom。所以所有空單元總是會排列在最下面。第三列看起來並不像它的排序原因是因爲該列中的所有鏈接都具有相同的文本。這是一個demo

更新:也從第四列刪除tablesorter-headerSortDown,它仍然在css中,但插件現在使用tablesorter-headerDesc