1

テーブルソーターを使用してテーブルの内容を並べ替えています。私のテーブルは以下の通りです。

<table class="results" border="1">
<thead>
    <tr>
        <th class="header">No</th> 
        <th class="header">Distance</th>
        <th class="header">Diagnostic Fee</th>
        <th class="header">Regular Price </th>
        <th class="header">Company Price</th>
        <th class="">&nbsp;</th>
    </tr>
</thead>

<tbody>
    <tr>
        <td>1</td>
        <td class="distance"><a>16.50 kms.</a></td>
        <td class="brand"><a>Credited</a></td>
        <td><a>$5</a></td>
        <td><a>$5<small>after 5% cash back</small></a></td>
    </tr>
    <tr>
           <td>2</td>
        <td class="distance"><a>6.30 kms.</a></td>
        <td class="brand"><a>Credited</a></td>
        <td><a>$8</a></td>
        <td><a>$8<small>after 5% cash back</small></a></td>
    </tr>
    <tr>
        <td>3</td> 
        <td class="distance"><a>10.25 kms.</a></td>
        <td class="brand"><a>Credited</a></td>
        <td><a>$2</a></td>
        <td><a>$2<small>after 5% cash back</small></a></td>
    </tr>
</tbody>
</table>​

距離と価格を使用してテーブルを並べ替えたいです。距離は「12kms」のように英数字で表示されるため、距離でテーブルを解くのが難しいと感じています。したがって、テーブルはソートされていません。

数字だけでコンテンツを解析する方法を誰かにアドバイスできますか?

これがjsfiddleのデモです

4

2 に答える 2

5

Tablesorterは、データを正しく取得できないセルに追加のパーサーを定義する方法を提供します。関心のある2つの列に対して2つのパーサーを定義する必要があります。

だからあなたは持っているかもしれません:

$.tablesorter.addParser({
  id: 'distance',
  is: function(s) {
    return false;
  },
  format: function(text, table, cell) {
    return parseFloat(text.replace('kms.', ''));
  },
  type: 'numeric'
});

距離の場合、および:

$.tablesorter.addParser({
   id: 'price',
   is: function(s) {
     return false;
   },
   format: function(text, table, cell) {
     return parseFloat(text.replace('$', ''));
   },
   type: 'numeric'
 });

価格について。次に、解析を使用する列をtablesorterに指示します。

$("table").tablesorter({
  debug:false,  
  sortList: [[0, 0], [2, 0]],
  headers: {
    1: {
      sorter: 'distance'
    },
    3: {
      sorter: 'price'
    }
  }
});​
于 2012-11-20T10:35:13.417 に答える
1

Tablesorteにはオプション'textExtraction'があるため、並べ替える前にテキストを調べる関数を定義できます。例:

$("table").tablesorter({
        debug:false,  
        sortList: [[0, 0], [2, 0]],
        textExtraction: function(node) {  
            var $node = $(node)
            var text = $node.text();
            if ($node.hasClass('distance')) {
                text = text.replace('kms', '');
            };

            return text;
        }
});

更新されたフィドル

于 2012-11-20T10:34:58.677 に答える