Нужна помощь с сортировкой jquery - PullRequest
0 голосов
/ 07 мая 2010

У меня есть столбец, внутри которого находятся несколько «записей» (каждая из них - div). Каждая запись имеет набор полей (каждый диапазон, идентификатор которого является именем поля).

Я хочу разрешить пользователю сортировать все записи на основе поля. Я также хочу, чтобы отсортированное поле было перемещено в начало записи. Вот я и придумал это. Но это действительно медленно для больших наборов. Не уверен, что это лучший способ сделать это. Есть идеи?

$(".col1 div").sort(
  function (a,b)
  {
     if($(a).children("."+field).text() > $(b).children("."+field).text())
          return -1;
     else
           return 1;
  }).appendTo(".col1");

1 Ответ

1 голос
/ 07 мая 2010

Было бы более разумно извлечь ваши данные в объекты javascript, а затем переупорядочить / визуализировать таблицу с новым порядком сортировки. Вы можете сделать один проход (или сериализовать ваши данные в объект json непосредственно на странице, когда вы выводите их на серверную часть), который вытягивает ваши данные в объекты.

data = []
$.each("div",function(i,node){
    var x = $(node);
    data.push({name:x.find(".name"),field:x.find(".field")});
})

// sort the data
sorted = data.sort(function(a,b){ return a['field'] > b['field'] });
// then either rewrite the dom or reorder the dom using the id of each div.

Поиск Dom очень дорог, сортировка в коде будет намного быстрее.

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