2017-07-19 106 views
-1

我正在使用名爲tablesorter的插件。我正在嘗試使用rowspan行對錶進行排序。但是,它不會正確排列所有列。這是jsFiddle排序表無法正常工作

<table cellspacing="1" class="tablesorter"> 
    <thead> 
    <tr> 
     <th>First Name</th> 
     <th>Age</th> 
     <th>Country</th> 
    </tr> 
    </thead> 
    <tbody> 
    <tr> 
     <td>Peter</td> 
     <td>28</td> 
     <td rowspan="2" style="vertical-align:middle">AAA</td> 
    </tr> 
    <tr class="expand-child"> 
     <td>John</td> 
     <td>33</td> 
    </tr> 
    <tr> 
     <td>Clark</td> 
     <td>18</td> 
     <td>BBB</td> 
    </tr> 

    <tr> 
     <td>Bruce</td> 
     <td>22</td> 
     <td>CCC</td> 
    </tr> 
    </tbody> 
</table> 

JS

$('table').tablesorter(); 

年齡列不正確排序,我怎麼讓這個所有列的排序是否正確?

+2

對我來說,演示並沒有正確排序。訂單下降時,年齡屬性按「28-> 33-> 8-> 22」排序。 –

+0

我看到@ShanevandenBogaard相同 - 所有排序選項都能正常工作*除了*年齡遞減。 –

+0

@RoryMcCrossan:按降序排序,33在28之後而不是在之前。 [Maaz找出原因](https://stackoverflow.com/a/45195312/157247)。 –

回答

0

你想要初始排序嗎?

排序按年齡

$('table').tablesorter({sortList: [[1,0]]}); 

排序名字和年齡

$('table').tablesorter({sortList: [[0,0], [1,0]]}); 
4

問題(視覺,不是技術上的)是,你有一個標記John作爲Peter一個孩子。所以,只有數字28,18和22被考慮用於排序。 33從來沒有考慮過排序。

更改如下的前兩行似乎解決了問題

<tr> 
    <td>Peter</td> 
    <td>28</td> 
    <td>AAA</td> 
</tr> 
<tr> 
    <td>John</td> 
    <td>33</td> 
</tr> 

從你的HTML和你的排序要求的外觀,看起來並不像你所需要的rowspanexpand-child類。也許你迷惑rowspan與2行相同的值?

+0

這是一個非常簡單的例子,我爲一個更大的問題。我需要有rowspan,我需要它根據年齡 – user2896120

+0

相應地排序然後,您目前的示例工作正常。你不能指望一個孩子與父母一起排序。孩子會堅持它的父母。 –

+0

孩子應該在其父母中排序,雖然 – user2896120