在用tablesorter排序的时候遇到问题了求大神解答,当使用colspan的时候,tablesorter排序对于第二行的就不排序了,只能对第一行进行排序,求教~~~~~100分呀

解决方案 »

  1.   

    colspan,没用的 td 补上隐藏起来
      

  2.   

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
     <style>
        table{ border-collapse:collapse; }
        td{border:1px solid #000; }
    </style>
    <table border=1 id="t1" >
    <tr> <th>t1</th> <th>t2</th> </tr>
     <tr> <td>1</td> <td>a</td> </tr>
     <tr> <td>1</td> <td>b</td> </tr>
     <tr> <td>3</td> <td>b</td> </tr>
     <tr> <td>4</td> <td>b</td> </tr>
     <tr> <td>1</td> <td>b</td> </tr>
    </table>
    <script>
    function mergeCell(id,i){
        var tb=$(id), rs=tb[0].rows,ac,acv;
        if(!rs.length) return;
        tb.find('td').show().attr('rowSpan',1);
        for(var r=0;r<rs.length;r++){
            var cs=rs[r].cells, c=cs[i];
            if( !ac|| (c.innerHTML!=ac.innerHTML ) ){
                ac=c;
            }else{
                 ac.rowSpan++;
                 c.style.display='none'
            }
        }
    }
    function sortTable(id,colnum,th){
      var tb=$(id+' tbody');
    var tds=[].slice.call( $(id + " tr td:nth-child(" +colnum + ")") ) ;
    var sort=$(th).data('sort')||1;
    tds.sort(function(a,b){ return ($(a).text()>$(b).text()?1:-1)*sort   });
    $(th).data('sort',sort*-1);
    $.each(tds, function(i,v){
     tb.append( v.parentNode );
    });
    }
    $(function(){
    $('#t1 th').click(function(){
    sortTable('#t1',this.cellIndex+1,this);
    mergeCell('#t1',this.cellIndex )
    });
    })
    </script>
      

  3.   

    <table class="selecday" id="tb0">
     <tr>
      <td width="140" bgcolor="#6699CC" class="list_heard" colspan="2" >a1</td>
      <td width="140" bgcolor="#6699CC" class="list_heard" colspan="2" >a2</td>
     </tr>
     <tr>
      <td width="70" bgcolor="#6699CC" class="list_heard">b1</td>
      <td width="70" bgcolor="#6699CC" class="list_heard">b2</td>
      <td width="70" bgcolor="#6699CC" class="list_heard">b3</td>
      <td width="70" bgcolor="#6699CC" class="list_heard">b4</td>     
     </tr>
    </table>
    <table id="tb1">
    <td  width="70"  bgcolor="#CCFFFF" class="list_data_str">1111</td>
    <td  width="70"  bgcolor="#CCFFFF" class="list_data_str">2222</td>
    <td  width="70"  bgcolor="#CCFFFF" class="list_data_str">3333</td>
    <td  width="70"  bgcolor="#CCFFFF" class="list_data_str">4444</td>
    </table>
    我现在就是想让下面的b1,b2,b3,b4列用tablesorter进行排序,但是做出来的效果是上面a1,a2可以排序。<script type="text/javascript">
    window.onload = function() {
    var tableSorter = new TableSorter("tb0","tb1",0,1,2,3,);
    }
    </script>
      

  4.   

    我不知你 TableSorter 怎么写的,你只要把 TableSorter里 第一个对表对象 "tb0" 头以第二第为准就行了或或者  id="tb0" 表头拆开两个table
    <table class="selecday" >
     <tr>
      <td width="140" bgcolor="#6699CC" class="list_heard" colspan="2" >a1</td>
      <td width="140" bgcolor="#6699CC" class="list_heard" colspan="2" >a2</td>
     </tr>
    </table>
    <table class="selecday" id="tb0">
     <tr>
      <td width="70" bgcolor="#6699CC" class="list_heard">b1</td>
      <td width="70" bgcolor="#6699CC" class="list_heard">b2</td>
      <td width="70" bgcolor="#6699CC" class="list_heard">b3</td>
      <td width="70" bgcolor="#6699CC" class="list_heard">b4</td>     
     </tr>
    <table>