使用jQuery Tablesorter自定义alphanumberic排序

时间:2016-08-31 22:26:44

标签: javascript jquery sorting tablesorter

我目前正在为我的项目表使用jQuery Tablesorter,我想让它处理自定义排序,以便:

A, AA, B, BB, 1, 2

将排序为:

1, 2, A, B, AA, BB

我可以在初始化过程中通过textSorter选项实现这一点,如下所示:

                    $(".tablesorter").tablesorter({
                        textSorter: {
                            3: function (a, b) {
                                return b.length > a.length ? -1 : b.length < a.length ? 1 : b.toString() > a.toString() ? -1 : 1;
                            }
                        }
                     }

或者更清楚:

                               if (b.length > a.length) {
                                    return -1;
                                } else if (b.length < a.length) {
                                    return 1;
                                } else {
                                    if (b.toString() > a.toString()) {
                                        return -1;
                                    } else {
                                        return 1;
                                    }
                                }

但我想要做的是能够在指定类名时将其作为默认排序,类似于我能够将sorter-floats作为clas添加到任何th像这样<th class='sorter-floats'>COL NAME</th>并使用addParser方法来处理解析这样排序的值:

  $.tablesorter.addParser({
      id: "floats",
      is: function (s) {
          return false;
      },
      format: function (s) {
          return $.tablesorter.formatFloat(s.replace(/,/g, ''));
      },
      type: "numeric"
  });

我无法在tablesorter插件中找到允许以这种方式进行自定义排序的任何方法。这是可能的,还是我已经使用过的最佳选择?

1 个答案:

答案 0 :(得分:1)

Tablesorter未设置为允许textSorter option包含除整体函数以外的任何内容,或包含从零开始的列索引的对象。

我刚刚使用补丁更新了主分支,该补丁还允许添加列类名(demo):

$(function() {

  $("table").tablesorter({
    theme: 'blue',
    textSorter: {
      '.sorter-float': function(a, b) {
        return b.length > a.length ? -1 :
          b.length < a.length ? 1 :
          b.toString() > a.toString() ? -1 : 1;
      }
    }
  });

});

我还没有决定下一个版本何时可用,但不会太长。

相关问题