Сортировка JSON ZA по альтернативным щелчкам - PullRequest
1 голос
/ 12 декабря 2011

У меня есть функция для сортировки объекта 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+"");
   });

Все это можно найти здесь .Эта функция запускается при нажатии на таблицу <th>.Способ его настройки теперь позволяет сортировать по AZ, но при втором / альтернативном щелчке я хочу отсортировать его из ZA.Проблема, с которой я сталкиваюсь, заключается в отслеживании кликов.Я пытался использовать .data() безрезультатно, и .toggle() не будет работать для меня в этой ситуации.У меня вопрос: как отслеживать клики, чтобы разрешить сортировку ZA?

Ответы [ 2 ]

2 голосов
/ 12 декабря 2011

Я внес несколько изменений в вашу скрипку, что позволяет отслеживать сортировку.Обратите внимание на комментарии в коде JavaScript: http://jsfiddle.net/thejase/unwsr/16/

Кроме того, ваш отсортированный заголовок теперь будет иметь два хука класса CSS: .sortby для столбца сортировки и .reversed, если он обратный.

1 голос
/ 12 декабря 2011

Попробуйте ввести объект 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

Здесь - код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...