使用jQuery Table Sorter对表格列进行排序

5
我想知道是否有一种方法可以使用Table Sorter对列进行排序, 以便我可以根据某个ID或其他任何内容来排列这些列本身。 例如,如果我想按照Apple列来排序表格,怎么做呢?

Table Sorter没有内置此功能,您是否绑定了该插件?虽然我想不到有多轻量级的其他插件可以自动完成此操作,但还是有其他插件可以实现此功能。 - Nick Craver
4个回答

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));
    });

});

无需插件。


1

有一个叫做Datatable的jQuery插件,它非常易于使用,像大多数插件一样,在不需要额外工作的情况下即可实现您想要的所有功能。

http://www.datatables.net/

请查看。


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>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接