我有一个html表,我试图使用tablesorter排序(我相信我有最新的版本)。问题是当我对某些列进行排序时,结果排序不符合要求。具体来说,我列中的每个数字都有一个" R"字符是它的前面(南非兰特的简称),当我对列进行排序时,它只对第一个数字进行排序,而不是全部。例如。 R100出现在R70之前。我的HTML看起来像这样:
<div class="table-responsive container-fluid">
<table id="BrokerTable" class="table table-bordered table-hover tablesorter">
<thead>
<tr>
<th class="col-md-2">Broker<span class="glyphicon glyphicon-chevron-down headimage"></span></th>
<th class="col-md-2">Base Transaction Fee<br> (per trade)<span class="glyphicon glyphicon-chevron-down headimage"></span></th>
<th class="col-md-2">Minimum Transaction Fee<br> (per trade)<span class="glyphicon glyphicon-chevron-down headimage"></span></th>
<th class="col-md-2">Monthly Management Fee<br> (exc. VAT)<span class="glyphicon glyphicon-chevron-down headimage"></span></th>
<th class="col-md-2">Allows limit orders<br> (required for placing orders outside of trading hours)<span class="glyphicon glyphicon-chevron-down headimage"></span></th>
<th class="col-md-2">Allows stop-loss orders<span class="glyphicon glyphicon-chevron-down headimage"></span></th>
</tr>
</thead>
<tbody>
<tr>
<td><p>28E Capital</p></td>
<td><p>0.7% : R0-R49,999<br>0.5% : R50,000-R499,999<br>0.4% : R500,000-R999,999<br>0.35% : R1,000,000+</p></td>
<td><p>R125</p></td>
<td><p>R40</p></td>
<td><p><b class="greenTick">✓</b></p></td>
<td><p><b class="greenTick">✓</b></p></td>
</tr>
<tr>
<td><p>ABSA</p></td>
<td><p>0.4%</p></td>
<td><p>R120</p></td>
<td><p>R67</p></td>
<td><p><b class="greenTick">✓</b></p></td>
<td><p><b class="redcross">✘</b></p></td>
</tr>
<tr>
<td><p>AfriFocus</p></td>
<td><p>0.5%</p></td>
<td><p>R125</p></td>
<td><p>R65</p></td>
<td><p><b class="greenTick">✓</b></p></td>
<td><p><b class="greenTick">✓</b></p></td>
</tr>
</tbody>
</table>
我的tableorter js是:
<script>
$(document).ready(function() {
$("#BrokerTable").tablesorter( {sortList: [[1,0]]} );
}
);
</script>
如果有人知道如何完成这项工作,那就太棒了。
杰克
答案 0 :(得分:0)
Tablesorter API支持使用自定义方法提取文本以进行排序。试试这个:
var removeLeadingR = function(node) {
var text = $(node).text();
return text[0] === 'R' : text.substring(1) : text;
}
$(document).ready(function() {
$("#BrokerTable").tablesorter( {sortList: [[1,0]], textExtraction: removeLeadingR } );
});
答案 1 :(得分:0)
我认为实际问题是原始tablesorter(v2.0.5)不执行字母数字排序。
我做了一个fork of tablesorter,有很多改进。它确实执行字母数字排序。
我创建了a demo from the HTML you provided,但它没有R100或R70,所以我添加了它们......
$(function () {
$("#BrokerTable").tablesorter({
sortList: [[1,0]],
theme: 'blue'
});
});