【发布时间】:2012-11-06 04:26:10
【问题描述】:
我正在使用这个很棒的 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 方面不是特别强,所以它可能在排序功能的某个地方。谢谢。
【问题讨论】:
-
先使用console.log确认是否进入
textSorter函数,如果是,检查a和b的值。 -
似乎它永远不会进入排序功能,因为在我添加 console.log("We are here"); 后,Firebug 中没有显示任何内容;进入功能。我不明白这是怎么可能的,我认为一旦单击第 2 列的标题(实际上是表中的第三列),它就必须进入函数。
-
那么问题就来了,为什么它忽略了你传入所述列的 textSorter 选项。
-
这里的例子展示了一种完全不同的使用方式...mottie.github.com/tablesorter/docs/…
-
我无法弄清楚。我试图添加表,列作为函数的参数,但它没有帮助。无论 sortLocaleCompare 配置如何,我都希望排序功能以这种方式工作,因此我没有使用 if (table.config.sortLocaleCompare) 行。
标签: jquery tablesorter