我正在使用jQuery Tablesorter的这个优秀版本:http://mottie.github.com/tablesorter/docs/index.html
一切都运作良好但现在我遇到了这个问题:在我的表格中,我有一个包含篮球运动员位置的专栏。因此,我希望按照逻辑方式对该列进行排序:PG-SG-SF-PF-C。
我尝试创建这个自定义排序功能 - 看看我的脚本,第2列:
$(document).ready(function() {
$(".stats").tablesorter({
sortInitialOrder: 'desc',
sortRestart: true,
// Enable use of the characterEquivalents reference
sortLocaleCompare: false,
// if false, upper case sorts BEFORE lower case
ignoreCase: true,
headers: {
0: {
sortInitialOrder: 'asc'
},
1: {
sortInitialOrder: 'asc'
},
2: {
textSorter: function(a, b){
var positions = {
"PG": 0,
"SG": 10,
"SF": 20,
"PF": 30,
"C": 40
};
return ((positions[a] < positions[b]) ? -1 : ((positions[a] > positions[b]) ? 1 : 0));
},
sortInitialOrder: 'asc'
}
}
}
);
});
但是,该列仍然按字母顺序排序,就像普通文本字符串一样(C-PF-PG-SF-SG)。
我在哪里弄错了?我在Javascript中并不是特别强大所以它可能在排序功能中的某个地方。谢谢。
答案 0 :(得分:6)
我通过添加我自己的解析器来解决这个问题,就像这个问题所示:Sorting Image and hyperlink columns in a table using JQuery Sorter plugin
我将复制我希望它工作的脚本,希望它可以帮助某人:
$(document).ready(function() {
$.tablesorter.addParser({
// set a unique id
id: 'positions',
is: function(s) {
// return false so this parser is not auto detected
return false;
},
format: function(s) {
// format your data for normalization
return s.toLowerCase()
.replace("pg", "d")
.replace("sg", "h")
.replace("sf", "m")
.replace("pf", "r")
.replace("c", "v");
},
// set type, either numeric or text
type: 'text'
});
$(".stats").tablesorter({
sortInitialOrder: 'desc',
sortRestart: true,
headers: {
0: {
sortInitialOrder: 'asc'
},
1: {
sortInitialOrder: 'asc'
},
2: {
sorter: 'positions',
sortInitialOrder: 'asc'
}
}
}
);
});