我有一个函数来对JSON对象进行排序,如下所示:
function compare(el1, el2, index) {
return el1[index] == el2[index] ? 0 : (el1[index] < el2[index] ?-1 : 1);
}
array.sort(function(el1,el2){
return compare(el1, el2, ""+thSortKey+"");
});
可以找到整件事here。单击表<th>
时运行此功能。现在它的设置方式允许进行A-Z排序,但是在第二次/备用点击时我想从Z-A中对其进行排序。我遇到的问题是跟踪点击次数。我尝试使用.data()
无效,.toggle()
在这种情况下对我不起作用。我的问题是如何跟踪点击次数以便我可以进行Z-A排序?
答案 0 :(得分:2)
我对你的小提琴做了一些改动,允许排序跟踪。请注意JavaScript代码中的注释:http://jsfiddle.net/thejase/unwsr/16/
此外,您的已排序标题现在将有两个CSS类挂钩:.sortby用于排序列,而.reversed用于排序。
答案 1 :(得分:1)
尝试使用dirCols
和key = headerName
引入value = direction
个对象。
然后:
var dirCols = {}; // <- added ... directions for columns
$('table tr th').live("click", function() {
table = $('<table border="1"><tr>'+headersString+'</tr>');
var thSortKey = $(this).text();
var dir = dirCols[$(this).text()] || 1; // <- added ... get previous dir or 1
dirCols[$(this).text()] = -1 * dir; // <- added ... save inverted dir
function compare(el1, el2, index) { // <- modified ... use dir in compare
return el1[index] == el2[index] ? 0 : dir * (el1[index] < el2[index] ?-1 : 1);
}
// rest of the code
Here是代码。