按备用点击排序JSON Z-A

时间:2011-12-12 02:22:15

标签: jquery json sorting

我有一个函数来对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排序?

2 个答案:

答案 0 :(得分:2)

我对你的小提琴做了一些改动,允许排序跟踪。请注意JavaScript代码中的注释:http://jsfiddle.net/thejase/unwsr/16/

此外,您的已排序标题现在将有两个CSS类挂钩:.sortby用于排序列,而.reversed用于排序。

答案 1 :(得分:1)

尝试使用dirColskey = 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是代码。