我在包含字符串的列上使用TableSorter:
$.tablesorter.addParser(
{
id: 'positions',
is: function(s) {
return false;
},
format: function(s) {
var abbr=s.replace(/[^a-zA-Z0-9]/g, '').slice(_sortpos);
return abbr;
},
type: 'numeric'
}
);
format函数应返回一个取决于global _sortpos变量的值。该值动态变化。这一行:
var abbr=s.replace(/[^a-zA-Z0-9]/g, '').slice(_sortpos);
删除所有非数字和非字母,然后删除一定数量的初始字符。打算按_sortpos-th字符排序。
似乎发生的情况是,当解析器添加到表分类器时,只为每个字符串解析格式函数一次。但是出于我的目的,每次我进行排序时都必须重新运行格式化函数。
到目前为止,我每次排序时都尝试添加解析器。但那没用。我还尝试通过重新运行初始化来重新初始化tablesorter
$(".tablesorter").tablesorter(
{
sortReset: true,
headers: {
1: {
sorter: 'positions'
}
}
}
);
但无济于事。
我该怎么办?另外:是否有比较器功能可用于潜入全局参数?然后我可以在解析器中格式化字符串,然后在slice()中使用_sortpos - 在比较器中动态运行。
答案 0 :(得分:0)
我自己找到了答案:
$(document).ready(function() {
$(".tablesorter").tablesorter(
{
textSorter: function(a, b, table, column){
if (column==1)
{
var c=parseInt(a.replace(/[^a-zA-Z0-9]/g, '').slice(_sortpos));
var d=parseInt(b.replace(/[^a-zA-Z0-9]/g, '').slice(_sortpos));
return ((c < d) ? -1 : ((c > d) ? 1 : 0));
}
return a.localeCompare(b);
}
}
);
});
它不使用解析器,只使用自定义排序器对列== 1进行排序。