我正在使用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。当动态添加新列时会出现问题 - 这些列的索引值可能会发生变化。
这带来了我的问题;有没有办法将窗口小部件选项应用于按名称命名的列?如果没有,是否有一些我可以实现的解决方案可以实现我可以动态添加/删除列的功能,而不会干扰过滤器功能?
编辑:我也在使用过滤功能。
答案 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