代码之家  ›  专栏  ›  技术社区  ›  Sharun

需要jquery排序帮助吗

  •  0
  • Sharun  · 技术社区  · 16 年前

    我有一个列,其中有多个“记录”(每个都是div)。

    我想允许用户根据字段对所有记录进行排序。我还需要,已经排序的字段移到记录的开头。所以我想到了这个。但对于大型电视机来说真的很慢。不知道最好的办法是什么。有什么想法吗?

    $(".col1 div").sort(
      function (a,b)
      {
         if($(a).children("."+field).text() > $(b).children("."+field).text())
              return -1;
         else
               return 1;
      }).appendTo(".col1");
    
    1 回复  |  直到 16 年前
        1
  •  1
  •   Nick Craver    16 年前

    将数据提取到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.