subHeader中的jQuery tablesorter

时间:2013-03-21 15:54:58

标签: javascript jquery tablesorter

我在UI中使用jQuery tablesorter。我有一个场景,我有一个包含2行标题的表。主标题和副标题。我想在子标题中添加排序。我怎么能这样做。

这就是我的代码的样子,

<table class="grid" id="gr1" cellspacing="0" width="100%" border="1">
     <tr bgcolor="#FF0000"><th class="NOBORDER" colspan="1">&nbsp;</th>
     <th class="NOBORDER" colspan="3">A</th>
     <th class="NOBORDER" colspan="3">B</th>
     <th class="NOBORDER" colspan="3">C</th>
     <th class="NOBORDER" colspan="3">D</th>
     <th class="NOBORDER" colspan="3">E</th>
     <th class="NOBORDER" colspan="3">F</th>
     </tr>
     <tr>
     <th>Group</th> 
     <th>A1</th>
     <th>A2</th>
     <th>A3</th>
     <th>B1</th>
     <th>B2</th>
     <th>B3</th>
     <th>C1</th>
     <th>C2</th>
     <th>C3</th>
     <th>D1</th>
     <th>D2</th>
     <th>D3</th>
     <th>E1</th>
     <th>E2</th>
     <th>E3</th>
     <th>F1</th>
     <th>F2</th>
     <th>F3</th>
    </tr>   

从这个表中我想要对第二行中的组列进行排序。我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

表格(working demo)有三个问题:

  1. tablesorter在初始化之前需要一个包含<thead><tbody>的表格。示例中没有显示完整的表格,因此我只能假设<tbody>也可能丢失。

    <table class="grid tablesorter" id="gr1" cellspacing="0" width="100%" border="1">
        <thead>
            <tr bgcolor="#FF0000">
                <th class="NOBORDER" colspan="1">&nbsp;</th>
                <th class="NOBORDER" colspan="3">A</th>
                ...
                <th class="NOBORDER" colspan="3">F</th>
            </tr>
            <tr>
                <th>Group</th>
                <th>A1</th>
                <th>A2</th>
                <th>A3</th>
                <th>B1</th>
                ...
                <th>F3</th>
            </tr>
        </thead>
        <tbody>
            <tr>...</tr>
        </tbody>
    </table>
    
  2. tablesorter的原始版本要求在应用任何样式之前将"tablesorter"类名添加到表中。

  3. 原始版本似乎也不适用于<thead>中的多个功能行。因此,禁用顶行中的排序以使排序在第三列中正常工作(第四列,第四列,但每组中第三列)。试试这个初始化代码:

    $('table').tablesorter({
        headers : {
            0 : { sorter: false },
            1 : { sorter: false },
            2 : { sorter: false },
            3 : { sorter: false },
            4 : { sorter: false },
            5 : { sorter: false },
            6 : { sorter: false }   
        }
    });
    

答案 1 :(得分:0)

尝试将表格放在表格中,并将tablesorter应用于内部表格。内部表将具有第二行标题,而外部表将具有第一行。您将不得不处理css / widths,尽管这会将外部表与内部表无缝地合并。 所以你的代码看起来像这样:

<table class="outerTableLook" id="OuterTable" cellspacing="0" width="100%">
 <tr bgcolor="#FF0000"><th class="NOBORDER" colspan="1">&nbsp;</th>
 <th class="NOBORDER" colspan="3">A</th>
 <th class="NOBORDER" colspan="3">B</th>
 <th class="NOBORDER" colspan="3">C</th>
 <th class="NOBORDER" colspan="3">D</th>
 <th class="NOBORDER" colspan="3">E</th>
 <th class="NOBORDER" colspan="3">F</th>
 </tr>
<tr>
<table class="grid" id="gr1" cellspacing="0" width="100%" border="1">
 <tr>
 <th>Group</th> 
 <th>A1</th>
 <th>A2</th>
 .......
</tr>  
....
</table><!--inner table -->
</tr>
</table><!-- outer table -->