2010-05-07 2 views
0

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

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

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

ответ

1

Было бы разумнее извлечь ваши данные в объекты 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. 

Домашние поисковые запросы действительно дороги, сортировка по коду будет намного быстрее.

+0

Имеет смысл. Нужно попробовать. Благодаря! – Sharun