Tablesorter无法在updateComplete上应用搜索条件

时间:2013-02-25 16:16:03

标签: javascript jquery search tablesorter

我在第一列中有一个包含类别名称的“tablesorter table”。我使用快捷按钮过滤行,这些按钮触发特定的“搜索”操作,具体取决于哪一个是活动的:

function do_filtering() {
    var category = $('#categories .active a').attr('data-filter-text');
    var columns = [];
    columns[0] = category;
    $('table').trigger('search', [columns]);
}

表的内容可能会发生变化。到目前为止,我在桌面上触发了两个事件:“updateCell”和“search”,并且它得到了适当的更新。

我需要分开这些电话:

  • “updateCell”将由单元格编辑器触发(由特定列内容的“分类器”附加)
  • 单元格更新后将触发“搜索”。

不幸的是,在“updateComplete”处理程序中进行过滤不起作用,请参阅:http://jsfiddle.net/8cg4f/352/

如何在更新表后保留搜索条件?

1 个答案:

答案 0 :(得分:0)

嗯,问题似乎是因为过滤器输入为空,过滤器小部件显示更新后的所有行。我有两个解决方案,第二个可能是更好的解决方案因为第一个方法导致闪烁:

1)在回调中添加setTimeout,时间为1毫秒(demo):

    $('td').click(function () {
        resort = false;
        $("table").trigger('updateCell', [$(this).closest('td'), resort, function(table){
            setTimeout(function(){ do_filtering(); }, 1);
        }]);
    });

2)更新过滤器,并隐藏过滤器行(demo):

CSS

.tablesorter-filter {
    display: none;
}

代码

function do_filtering() {
    var category = $('#categories .active a').attr('data-filter-text');
    $('.tablesorter-filter:first').val(category).trigger('search');
}

$('td').click(function () {
    resort = false;
    $("table").trigger('updateCell', [$(this).closest('td'), resort, function(table){
        do_filtering();
    }]);
});