1

问题

我一直在使用Tablesorter插件来让最终用户的生活更美好。我花了几个小时试图同时启用“滚动器”和“过滤器”小部件。问题是,当两者都启用时,下拉选择器无法过滤表结果。

我创建了一个小提琴来说明这个问题。


解决方法

(我认为,)我已将问题缩小到change下拉选择器事件的损坏事件侦听器。

根据文档,一些方法可用于获取当前过滤器。

当我运行时:

$.tablesorter.getFilters( $('table') );

它返回一个过滤器值数组;但是,下拉选择器始终是空字符串。

另一方面,如果我运行:

$.tablesorter.setFilters( $('table'), [ 'Some Value', '', '', '' ], true );

然后过滤器将被更新并按预期过滤表。

我最终制作了自己的事件侦听器,更新过滤器并使用新参数进行搜索。

$('someselector').on('change', 'select', function(event) {
    var table = $('sometableselector'),
        filters = $.tablesorter.getFilters( table );

    filters[Number($(this).attr('data-column'))] = $(this).val();
    $.tablesorter.setFilters( table, filters, true );
});

问题

我是否发现了一个错误,或者我只是做错了什么?

4

1 回答 1

1

$.tablesorter.getFilters()方法不知道查看重复的滚动条标头(由滚动条小部件创建),这就是它无法按预期工作的原因。

我想你可以称它为错误,因为该getFilters()函数不够智能,无法检查重复的标题。我继续添加了一个问题,所以我会记得在我休假回来后修复它。

于 2013-08-31T14:25:00.420 回答