2010-06-27 7 views
4

Мне было интересно, есть ли способ сортировки столбцов с сортировщиком таблиц
Чтобы я мог расположить столбцы самостоятельно в соответствии с каким-либо идентификатором или чем-то еще.
alt textСортировка столбцов таблицы с сортировщиком таблицы jQuery

Так вот, например, если я хочу, чтобы отсортировать таблицу так, чтобы столбец Apple,
бы быть первым, как я могу это сделать?

+0

Таблица сортировщик не имеет этот встроенный, вы привязаны к этому плагину? Есть и другие, которые сделают это по своей сути, хотя и не настолько легкие, что я могу придумать. –

ответ

1

Демо: http://jsfiddle.net/fKMqD/

Код:

var rows = $('tr'); 

rows.eq(0).find('td').sort(function(a, b){ 

    return $.text([a]) > $.text([b]) ? 1: -1; 

}).each(function(newIndex){ 

    var originalIndex = $(this).index(); 

    rows.each(function(){ 
     var td = $(this).find('td'); 
     if (originalIndex !== newIndex) 
      td.eq(originalIndex).insertAfter(td.eq(newIndex)); 
    }); 

}); 

Нет плагинов требуется.

+0

+1 ... маленький, простой, работает! – opatut

1

Существует плагин для JQuery называется DataTable, очень проста в использовании, как и большинство плагинов и делает все, что вы хотите на лету из всех дополнительных работ ,

http://www.datatables.net/

проверить его.

+0

+1 отличный аддон! – opatut

0

Я получил это работает константа выглядит

<html> 
    <head> 
    <script type="text/javascript" src="http://www.google.com/jsapi"></script> 
    <script type="text/javascript"> 
     google.load("jquery", "1"); 
    </script> 
    <script> 
     $(function() { 
     // Figure out the new column order. 
     var isWas = {}; 
     $("tr").eq(0).find("td").each(function(index) { 
      $(this).attr("was", index); 
     }).sort(function(left, right) { 
      // Change this line to change how you sort. 
      return $(left).text() > $(right).text() ? 1 : -1; 
     }).each(function(index) { 
      isWas[index] = $(this).attr("was"); 
     }); 

     // Reorder the columns in every row. 
     $("tr").each(function() { 
      var tr = $(this); 
      var tds = tr.find("td"); 
      var newOrder = []; 
      for (var is = 0; is < tds.length; is++) { 
      newOrder.push(tds.eq(isWas[is])); 
      } 
      for (var is = 0; is < tds.length; is++) { 
      tr.append(newOrder[is]); 
      } 
     }); 
     }); 
    </script> 
    </head> 
    <body> 
    <table> 
     <tr><td>Potato</td><td>Tomato</td><td>Apple</td></tr> 
     <tr><td>20g</td><td>10gr</td><td>40gr</td></tr> 
    </table> 
    </body> 
</html> 
Смежные вопросы