0

私はテーブル構造を持っています。最初の子TDで同じコンテンツを持つすべてのTRをまとめて、グループの前にTRを追加したいと思います。そこで、同じ内容のTRをグループ化しようとしています。

私の構造は

    <tbody>
         <tr>
              <td class="groupBy">www.bing.com</td>
              <td>2</td>
         </tr>
         <tr>
              <td class="groupBy">www.google.com</td>
              <td>5</td>
         </tr>
          <tr>
              <td class="groupBy">www.bing.com</td>
              <td>2</td>
         </tr>
          <tr>
              <td class="groupBy">www.yahoo.com</td>
              <td>8</td>
         </tr>
          <tr>
              <td class="groupBy">www.google.com</td>
              <td>8</td>
         </tr>
         <tr>
              <td class="groupBy">www.bing.com</td>
              <td>2</td>
         </tr>
    </tbody>

そして私はjqueryの後に以下の出力が欲しい

    <tbody> 
            <tr>
                <p>www.bing.com</p>
            </tr>
             <tr>
                  <td class="groupBy">www.bing.com</td>
                  <td>2</td>
             </tr>
             <tr>
                  <td class="groupBy">www.bing.com</td>
                  <td>2</td>
             </tr>
             <tr>
                  <td class="groupBy">www.bing.com</td>
                  <td>2</td>
             </tr>
             <tr>
                <p>www.google.com</p>
            </tr>
             <tr>
                  <td class="groupBy">www.google.com</td>
                  <td>5</td>
             </tr>
              <tr>
                  <td class="groupBy">www.google.com</td>
                  <td>5</td>
             </tr>
             <tr>
                <p>www.yahoo.com</p>
            </tr>
              <tr>
                  <td class="groupBy">www.yahoo.com</td>
                  <td>8</td>
             </tr>
</tbody>

誰かが私がこれを整理するのを手伝ってくれますか?

4

1 に答える 1

1

あなたが説明したのは、要素をグループ化せずにソートすることです。ここに汚い解決策があります:

var arr = [], s = [];

$('tr').sort(function(a, b){
   return $(a).text() > $(b).text(); 
}).each(function(i, v){
    var t = $('td:first', v).text();
    if ( arr.indexOf(t) === -1) {
       arr.push(t);
       s.push(v);
    }
}).appendTo('tbody').filter(s).before(function(){
    return '<tr class="header"><td><p>' +  $('td:first', this).text() +  '</p></td></tr>';
});

http://jsfiddle.net/SD8at/

于 2013-03-04T10:08:32.513 に答える