2013-02-21 95 views
1

我已經創建了一個表並使用tablesorter對它進行了排序。其中一列是字母和數字的組合(chr1,chr2,...,chr10,...,chrM)。我希望將此列排序,就好像它只是數字(從1到22,然後按此順序排列X,Y和M)。 我創建了我自己的解析器,它可以工作,但僅適用於某些行。然後,我發現另一個正確排序的行塊,然後是其他一些塊。我不知道爲什麼這個塊形成。代碼爲here。也許有一張小桌子就可以正常工作,因爲我已經展示了一張大桌子。jquery tablesorter:addParser排序不正確

在此先感謝!

回答

0

試試這個解析器(demo

$.tablesorter.addParser({ 
    // set a unique id 
    id: 'chrom', 
    is: function (s) { 
     // return false so this parser is not auto detected 
     return false; 
    }, 
    format: function (s) { 
     // format your data for normalization 
     return s.toLowerCase() 
      .replace('chr', '') 
      .replace('x', '97') 
      .replace('y', '98') 
      .replace('m', '99'); 
    }, 
    // set type, either numeric or text 
    type: 'numeric' 
}); 
+0

謝謝!首先,我改變了我的代碼,但是我保留了大寫字母(X,Y,M),並且我得到了完全相同的結果。然後,我嘗試了小寫,它的作品!我不明白爲什麼... – raquel 2013-02-22 08:47:57

+0

您需要將它們替換爲小寫字母,因爲s.toLowerCase()'。否則,你可以改變替換函數來包含一個不區分大小寫的標誌:'.replace(/ X/i,'97');'但是如果你不熟悉正則表達式,這會使讀起來更難。 – Mottie 2013-02-22 14:36:17

+0

感謝您的解釋! – raquel 2013-03-01 20:34:50