2010-05-07 148 views
0

我有一个列中有多个'记录'(每个div)。 每条记录​​都有一堆字段(每个字段的id都是字段名)。需要帮助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. 

Dom查找代价非常高,在代码中排序会快得多。

+0

有道理。需要尝试一下。谢谢! – Sharun 2010-05-07 12:55:00