2012-02-12 10 views
1

私はテーブルをソートするためにjQuery tablesorterを使用しています。ソートされた行のグループ間で何らかの分離を生成したいと思います。たとえば、Title、Category、Yearの表を使用している場合、一度ソートすると、ある年のすべての行には、他の列の間にパディングがあります。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

+0

@elclanrsこんにちは - jsbinは大丈夫ですか?私はこのウィジェットコードが間違いなく正しい道だと考えていますが、私はそれを理解していません - – waffl

答えて

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'] 
});​ 

更新rows = table.config.cache[0].normalized; tablesorterの私のフォークは、複数のtbodies渡って並べ替えることができますので、上記のスクリプトは、若干の修正なしでは動作しませんが - ここでそのupdated demoです私のフォークで動作します。上記のコードは、元のtablesorterプラグインで動作します。

+0

正確に私が探していたもの、素晴らしい、ありがとう! – waffl

関連する問題