Сортировка столбцов таблицы с помощью jQuery Table Sorter - PullRequest
4 голосов
/ 27 июня 2010

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

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

Ответы [ 4 ]

1 голос
/ 02 сентября 2010

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

http://www.datatables.net/

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

1 голос
/ 27 июня 2010

Демо: 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 голосов
/ 04 сентября 2010

Я получил это работает таким образом

<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>
0 голосов
/ 29 июня 2010

Может быть, это может помочь:

http://james.padolsey.com/javascript/sorting-elements-with-jquery/

...