2010-05-07 201 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