我在jquery中使用TableSorter插件。但是,表中的一列列出如下:
TableSorter无法正常工作。知道如何解决它。我可以使用的任何其他插件吗?
P.S:我不能用后缀M& B.所以我不能在数学上修改市值,以使其正常运作。由于
答案 0 :(得分:2)
通过the docs of TableSorter查看,您可以创建自定义解析器。
创建了这个简单的解析器,它看起来可以做到这一点
$.tablesorter.addParser({
// set a unique id
id: 'marketcap',
is: function(s) {
// return false so this parser is not auto detected
return false;
},
format: function(s) {
s = s.replace('$','');
if(s.indexOf('M') >-1){
s = parseInt(s)* 1000000;
}else if(s.indexOf('B') >-1){
s = parseInt(s)* 1000000000;
}
// format your data for normalization
return s;
},
// set type, either numeric or text
type: 'numeric'
});
答案 1 :(得分:1)
阿明的回答很好。也可以使用“K”或它可以与任何其他措施一起使用。所以完整的例子是:
$.tablesorter.addParser({
// set a unique id
id: 'marketcap',
is: function(s) {
// return false so this parser is not auto detected
return false;
},
format: function(s) {
s = s.replace('$','');
if(s.indexOf('K') >-1){
s = parseInt(s)* 1000;
}else if(s.indexOf('M') >-1){
s = parseInt(s)* 1000000;
}else if(s.indexOf('B') >-1){
s = parseInt(s)* 1000000000;
}
// format your data for normalization
return s;
},
// set type, either numeric or text
type: 'numeric'
});
$(function() {
$("table").tablesorter({
headers: {
3: {
sorter:'marketcap'
}
}
});
});
对于像这样的html:
<table cellspacing="1" class="tablesorter">
<thead>>
<tr>
<th>english</th>
<th>japanese</th>
<th>calculus</th>
<th>Market Cap</th>
</tr>
</thead>
<tbody>
<tr>
<td>80</td>
<td>70</td>
<td>75</td>
<td>$34M</td>
</tr>
<tr>
<td>90</td>
<td>88</td>
<td>100</td>
<td>$1.2B</td>
</tr>
<tr>
<td>85</td>
<td>95</td>
<td>80</td>
<td>$12M</td>
</tr>
</tbody>
答案 2 :(得分:0)
遗漏了什么!! 在上面的示例中,其中一个值为$ 1.2B,然后parseInt(s)将其转换为整数。 考虑使用:parseFloat()&amp; toFixed()表示要考虑的小数
$.tablesorter.addParser({
// set a unique id
id: 'marketcap',
is: function(s) {
// return false so this parser is not auto detected
return false;
},
format: function(s) {
s = s.replace('$','');
if(s.indexOf('K') >-1){
s = parseFloat(s).toFixed(3) * 1000;
}else if(s.indexOf('M') >-1){
s = parseFloat(s).toFixed(3) * 1000000;
}else if(s.indexOf('B') >-1){
s = parseFloat(s).toFixed(3) * 1000000000;
}
// format your data for normalization
return s;
},
// set type, either numeric or text
type: 'numeric'
});
$(function() {
$("table").tablesorter({
headers: {
3: {
sorter:'marketcap' // sorting (4th column with parser)
}
}
});
});