自定义选择过滤器功能基于选择器而不是列号?

时间:2013-05-15 10:24:18

标签: filter tablesorter filterfunction

docs我读到filter_functions可以按如下方式使用:

filter_functions: {
        // Add these options to the select dropdown (regex example)
        2 : {
          "A - D" : function(e, n, f, i) { return /^[A-D]/.test(e); },
          "E - H" : function(e, n, f, i) { return /^[E-H]/.test(e); },
          "I - L" : function(e, n, f, i) { return /^[I-L]/.test(e); },
          "M - P" : function(e, n, f, i) { return /^[M-P]/.test(e); },
          "Q - T" : function(e, n, f, i) { return /^[Q-T]/.test(e); },
          "U - X" : function(e, n, f, i) { return /^[U-X]/.test(e); },
          "Y - Z" : function(e, n, f, i) { return /^[Y-Z]/.test(e); }
        }
      }

这为第3列创建了自定义过滤器功能。我想知道是否可以指定一个选择器,例如.columnWithCoolFilteFunction而不是列号?

原因是我有多个表,其中一些列包含相似的数据 - 因此应以相同的方式进行过滤 - 但列号可能在一个表中为1,在另一个表中为5。

我知道一个解决方案是使用自己的选项启动每个表,但我真的希望以相同的方式启动每个表(更少的代码,是的!)。

可能的?

1 个答案:

答案 0 :(得分:1)

现在这是不可能的,但我确实有同样的想法!您可以跟踪this issue何时实施。

但与此同时,您可以做的是在初始化表之前设置过滤器对象:

var alphabetical = {
    "A - D" : function(e, n, f, i) { return /^[A-D]/.test(e); },
    "E - H" : function(e, n, f, i) { return /^[E-H]/.test(e); },
    "I - L" : function(e, n, f, i) { return /^[I-L]/.test(e); },
    "M - P" : function(e, n, f, i) { return /^[M-P]/.test(e); },
    "Q - T" : function(e, n, f, i) { return /^[Q-T]/.test(e); },
    "U - X" : function(e, n, f, i) { return /^[U-X]/.test(e); },
    "Y - Z" : function(e, n, f, i) { return /^[Y-Z]/.test(e); }
};

$("table").tablesorter({
    widgetOptions : {
        filter_functions: {
            0 : alphabetical
            2 : alphabetical
        }
    },
    // other options
});

是的,你必须分别初始化每个表,直到那时=(

相关问题