http://tablesorter.com是否可以根据排序是升序还是降序对不同的值进行排序?
我看到如何使用解析器(即:http://code-cocktail.in/hidden-value-sorting-in-jquery-tablesorter-plugin/)基于任意数据返回单元格的排序值,因此在不同情况下返回不同的值似乎很简单。
我正在敲打的是我在解析时似乎无法确定排序顺序。看起来我可以通过以下方式在请求排序时重新解析单元格:
$(".tablesorter").bind("sortStart",function() {
$(".tablesorter").trigger("update");
});
...但看起来就像在“sortStart”点那样排序的顺序是未知的,因此解析器不能根据该列的排序顺序提供不同的值。
这可能吗?谢谢: - )
答案 0 :(得分:1)
要使以下代码生效,您需要使用我的fork of tablesorter,其中包含与原始版本不兼容的css,小部件和插件。
这有点类似于this Stackoverflow question,只是它允许使用两个不同的值对一列进行排序(两个答案都可以使用不同的方法很好地工作)。
在升序排序期间使用一个值需要进行微小修改,在降序排序期间使用另一个值(demo):
HTML(一个单元格)
<th class="gamename">
<span class="name">Fun Fun</span>
<span class="perc">96%</span>
</th>
脚本
$(function () {
$('#games').tablesorter({
theme: 'blue',
textExtraction: {
0: function (node, table, cellIndex) {
var $n = $(node);
// add semi-colon between values
return $n.find('.name').text() + ';' + $n.find('.perc').text();
}
},
textSorter: function (a, b, direction, columnIndex, table) {
if (columnIndex === 0) {
var c = table.config,
x = a.split(';'),
y = b.split(';'),
// sort column by percentage when descending sort is active
i = c.$headers.eq(0).hasClass('tablesorter-headerDesc') ? 1 : 0;
return $.tablesorter.sortNatural($.trim(x[i]), $.trim(y[i]));
} else {
return $.tablesorter.sortNatural(a,b);
}
}
});
});