JQuery Tablesorter使用过滤器添加列

时间:2013-02-12 18:50:42

标签: javascript jquery tablesorter

我正在使用JQuery Tablesorter 2.7。*来获取我拥有的JavaScript表。我也在使用Tablesorter Filter小部件,以便让我的几个列具有下拉过滤选项。我有一个新的挑战:我需要动态地向表中添加列。我已经看到了这个问题:Adding columns dynamically to a table managed with jQuery's tablesorter - 建议我在每次添加/删除列时删除并重新创建表。这很公平,但这会导致与过滤器小部件发生冲突。

为了应用Filter函数,JavaScript仅按索引引用列,如下所示:

        widgetOptions: {
            filter_reset: '.reset',
            filter_functions: {
                2: true,
                3: true,
            }
        }

此代码会导致索引为2和3的列具有默认选择Filter。当动态添加新列时会出现问题 - 这些列的索引值可能会发生变化。

这带来了我的问题;有没有办法将窗口小部件选项应用于按名称命名的列?如果没有,是否有一些我可以实现的解决方案可以实现我可以动态添加/删除列的功能,而不会干扰过滤器功能?

编辑:我也在使用过滤功能。

1 个答案:

答案 0 :(得分:1)

更新#2:从tablesorter v2.17.0开始,类名*或ID可用于定位filter_functions选项中的列:

// filter functions
widgetOptions: {
    filter_functions : {
        ".exact" : function(e, n, f, i) {
            return e === f;
        }
    }
}

*注意:类名不能包含使用任何索引的选择器,例如"th:eq()"":gt()"":lt()"":first"":last"":even"":odd"":first-child",{{ 1}},":last-child"":nth-child()"


docs中,它显示了使用":nth-last-child()"选项的替代方法:

  

或者,不要将列过滤器功能设置为true,而是为列标题指定“filter-select”的类名。请参阅demo

因此,只需在列中添加filter_functions类名称。


更新:由于正在使用其他过滤器功能,您可以在初始化代码(demo)之外定义这些功能

filter-select