比'回调就像行为'更好的解决方案

时间:2012-06-18 09:25:12

标签: javascript jquery callback tablefilter

我使用jquery picnet表过滤器 - http://www.picnet.com.au/picnet-table-filter.html

我需要显示当前可见的行数,因此我需要对每个过滤事件做出反应。

有两个选项可用作回调 - filteringRows和filteredRows。

然而,我尝试了它们两个并没有成功。我有时只触发了回调函数。最后,我有一个有效的解决方案 -

$('#myTable .filters').change(function(){ setTimeout( 'load_num_rows()', 500 ) })
                               .keyup(function(){ setTimeout( 'load_num_rows()', 500 ) });

困扰我的是这个解决方案显然不是回调。这是等待500ms的过滤完成,但如果有很多行,过滤将花费超过500毫秒,那么我不会得到正确的结果。

我尝试的是

$('#tb_list_reports').tableFilter({filteredRows: function(){ 'load_num_rows()' }});

$('#tb_list_reports').tableFilter({filteredRows: function(){setTimeout( 'load_num_rows()', 500 )}});

和选项filteringRows相同。它们都不起作用,行数未更新。我已经尝试过console.log(),当我过滤行时,它们似乎都没有被触发,而且当我设置这些选项时,我得到一些奇怪的行为 - 有时我重新加载页面,没有过滤设置但我在第三次重装之前不要显示任何内容。

您对我应该尝试什么有任何建议吗?

2 个答案:

答案 0 :(得分:1)

这对我有用:

filteredRows: function(filterStates) {
    running_total = $("#assets tbody tr").filter(":visible").length;
    $("#total_rows_returned").html(running_total);
}

答案 1 :(得分:0)

这可能是您正在寻找的回调:$('#myTable').tableFilterRefresh();