需要有关jquery排序的帮助

时间:2010-05-07 11:26:18

标签: jquery sorting

我有一个列,其中有多个'记录'(每个都是div)。 每条记录都有一堆字段(每个字段都是一个字符,其id为字段名)。

我想允许用户根据字段对所有记录进行排序。我也想要,已经排序的字段被移动到记录的开头。所以我想出了这个。但它对于大型套装来说真的很慢。不知道最好的方法是什么。有任何想法吗?

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

1 个答案:

答案 0 :(得分: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.

Dom查找非常昂贵,代码排序会更快。