1

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

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/

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

4

1 回答 1

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)更新过滤器,并隐藏过滤器行(演示):

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();
    }]);
});
于 2013-02-26T00:41:25.453 回答