使用 jQuery Tablesorter 自定义字母数字排序

Custom alphanumberic sort with jQuery 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 作为类添加到任何 [=18] =] 像这样 <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 插件中找到任何允许以这种方式自定义排序的方法。这可能吗,或者我已经使用过的方法是我的最佳选择?

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

我刚刚用补丁更新了 master 分支,该补丁还允许添加列 class 名称 (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;
      }
    }
  });

});

我还没有决定下一个版本什么时候可用,但不会太久。