我有一个列,其中有多个'记录'(每个都是div)。 每条记录都有一堆字段(每个字段都是一个字符,其id为字段名)。
我想允许用户根据字段对所有记录进行排序。我也想要,已经排序的字段被移动到记录的开头。所以我想出了这个。但它对于大型套装来说真的很慢。不知道最好的方法是什么。有任何想法吗?
$(".col1 div").sort(
function (a,b)
{
if($(a).children("."+field).text() > $(b).children("."+field).text())
return -1;
else
return 1;
}).appendTo(".col1");
答案 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查找非常昂贵,代码排序会更快。