2014-04-02 73 views
3

奇怪behavoir:不正確的排序中的tablesorter

$(document).ready(function() { 
    var timeInSec = function(node) { return $(node).attr("time") }; 
    var sortDigit = { sorter : "digit" }; 

    $("#agentRapport").tablesorter({ 
     headers: { 
      1: sortDigit, 
      2: sortDigit 
     }, 
     textExtraction: { 
      1: timeInSec, 
      2: timeInSec 
     }, 
     sortList: [[1,1]] 
    }); 
}); 

得到的排序表看起來像這樣(整理以下自己就像你會看到它在瀏覽器中):

... 
<tr> 
    <td>Banana</td> 
    <td time="1411252">23 min 31 sec</td> 
    <td time="352813">5 min 52 sec</td> 
    <td>4</td> 
    <td>225</td> 
</tr> 
<tr> 
    <td>Apple</td> 
    <td time="1391952">23 min 11 sec</td> 
    <td time="347988">5 min 47 sec</td> 
    <td>4</td> 
    <td>86</td> 
</tr> 
<tr> 
    <td>Plum</td> 
    <td time="1427192">23 min 47 sec</td> 
    <td time="356798">5 min 56 sec</td> 
    <td>4</td> 
    <td>119</td> 
</tr> 
<tr> 
    <td>Pear</td> 
    <td time="1381072">23 min 1 sec</td> 
    <td time="345268">5 min 45 sec</td> 
    <td>4</td> 
    <td>108</td> 
</tr> 
... 

這是一個錯誤?

回答

2

如果您使用的是tablesorter.com的原始tablesorter(v2.0.5b),則上述代碼將不起作用,因爲textExtraction函數將不允許指定特定列。

但是,你可以使用我fork of tablesorter這確實允許此選項(demo

叉應該沒有任何多餘的功能工作,因爲它也有一個字母和數字排序(demo):

$(function() { 
    $("#agentRapport").tablesorter({ 
     sortList: [ 
      [1, 1] 
     ] 
    }); 
}); 

但是,如果您想要繼續使用原始版本的tablesorter,則可以使用解析器,並省去爲每個單元添加time="#"屬性(demo):

$.tablesorter.addParser({ 
    id: "min&sec", 
    is: function (s) { 
     return false; 
    }, 
    format: function (s, table) { 
     var min = (parseInt(s.match(/(\d+)(?:\s+min)/), 10) || 0) * 60, 
      sec = (parseInt(s.match(/(\d+)(?:\s+sec)/), 10) || 0); 
     return min + sec; 
    }, 
    type: "numeric" 
}); 

$(function() { 

    $("#agentRapport").tablesorter({ 
     headers: { 
      1: { sorter: "min&sec" }, 
      2: { sorter: "min&sec" } 
     }, 
     sortList: [ 
      [1, 1] 
     ] 
    }); 
}); 
+0

您是否看到我按特定標籤歸屬排序?但是,當我更改js文件時,它會起作用。該文件的精確版本將有所幫助。謝謝@Mottie,很好的工作! – myborobudur

+0

對不起,確切的版本哪個文件?如果你的意思是我的叉子,目前的版本是2.15.12。我確實看到代碼正在從time屬性中提取值,但解析器將計算相同的數字併爲您節省將時間屬性添加到每個單元格的額外工作。 – Mottie

+0

剛想過[java-maven版本控制約定](http://books.sonatype.com/mvnref-book/reference/pom-relationships-sect-pom-syntax.html)。查看當前庫/ js文件的版本很有幫助。 – myborobudur