我确实使用了tablesorter(https://mottie.github.io/tablesorter/docs/index.html) 要对我的HTML表进行排序。
我有一个排序我找不到怎么样。即
将按以下方式排序:
简而言之:()将被忽略并进行数字排序,数字首先按字母顺序排列。
我已经看过如何替换字符,(并没有像#34那样工作;空的"因为有些人也排名) 我见过的解析器要求我创建每个标头和要替换的已知值。 即:
$.tablesorter.addParser({
id: 'nummeriek',
is: function(s) {
return false;
},
format: function(s) {
// format your data for normalization
return s.toLowerCase().replace('dns',999).replace('(dns)',999).replace('(4)',4);
},
type: 'numeric'
});
$('.tablesorter').tablesorter({
headers: {
6: {
sorter:'nummeriek'
}
}
});
如果我必须为每个可能的表内容执行此操作,我最终会创建数百个replace()语句。因为我得分从1到100因此(1)到(100)也是可能的......
必须有一种更简单的方法。非常感谢任何帮助。
答案 0 :(得分:0)
默认的digit
解析器"假设"用括号括起来的数字是否定的;这是在会计中指示负数的常用方法(ref)。
要解决此问题,您需要稍微修改解析器(demo)
$(function() {
$.tablesorter.addParser({
id: 'nummeriek',
is: function(s) {
return false;
},
format: function(str) {
// format your data for normalization
var s = str.replace(/[()]/g, ""),
n = parseFloat(s);
return !isNaN(n) && isFinite(n) ? n : s;
},
type: 'numeric'
});
$('.tablesorter').tablesorter({
headers: {
0: {
sorter: 'nummeriek'
}
}
});
});
注意:此解析器始终返回不带括号的非数字字符串,例如"(DNS)"将成为" dns"。我保持这种方式,所以"(dns)"条目将按照" dns"。
进行排序