2012-02-12 50 views
1

我正在使用jQuery tablesorter对表进行排序,并希望在排序后在行组之间产生某种分离。例如,如果我使用标题,类别和年份表,一旦排序,某年的所有行将在其他行之间填充一定数量的填充。jQuery Tablesorter - 可以对'排序'行进行分组吗?

如:

Title Cat 2012 
Title Cat 2012 
Title Cat 2012 


Title Cat 2011 
Title Cat 2011 
Title Cat 2011 


Title Cat 2010 
Title Cat 2010 

我想这将有建立一个小部件,并比较各行的价值做的,如果行不匹配先前的值,那么就应适用某种一些填充但我有点不知所措。

JSBIN: http://jsbin.com/osehoy

任何方向/帮助将不胜感激,谢谢!

+0

你可以发布html和jsfiddle吗? – elclanrs 2012-02-12 18:16:19

+0

@elclanrs嗨 - jsbin好吗?我也认为这个小部件代码绝对是正确的路径,但我没有搞清楚 - http://tablesorter.com/docs/example-widgets.html – waffl 2012-02-12 18:20:18

回答

1

我不确定你是否想在两者之间添加一个空行或者只是增加行高,所以我选择了后者。这是我做的小部件和demo

$.tablesorter.addWidget({ 
    id: 'spacer', 
    format: function(table) { 
     var c = table.config, 
     $t = $(table), 
     $r = $t.find('tbody').find('tr'), 
     i, l, last, col, rows, spacers = []; 
     if (c.sortList && c.sortList[0]) { 
      $t.find('tr.spacer').removeClass('spacer'); 
      col = c.sortList[0][0]; // first sorted column 
      rows = table.config.cache.normalized; 
      last = rows[0][col]; // text from first row 
      l = rows.length; 
      for (i=0; i < l; i++) { 
       // if text from row doesn't match last row, 
       // save it to add a spacer 
       if (rows[i][col] !== last) { 
        spacers.push(i-1); 
        last = rows[i][col]; 
       } 
      } 
      // add spacer class to the appropriate rows 
      for (i=0; i<spacers.length; i++){ 
       $r.eq(spacers[i]).addClass('spacer'); 
      } 
     } 
    } 
}); 

$('table').tablesorter({ 
    widgets : ['spacer'] 
});​ 

更新:我的tablesorter的叉可以跨多个tbodies排序,所以上面的脚本不无稍作修改rows = table.config.cache[0].normalized;工作 - 在这里是一个updated demo是与我的叉子一起工作。上面的代码将与原始的tablesorter插件一起工作。

+0

恰恰是我在寻找的,太棒了,谢谢! – waffl 2012-02-23 16:48:22

相关问题