2017-07-19 105 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