更新 JQuery Tablesorter 过滤器函数

Posted

技术标签:

【中文标题】更新 JQuery Tablesorter 过滤器函数【英文标题】:Updating a JQuery Tablesorter Filter Function 【发布时间】:2012-12-22 18:45:32 【问题描述】:

我正在使用最新版本的 JQuery Tablesorter,并应用了 Filter 小部件。在两列中,我使用过滤器函数在过滤器中显示一个下拉菜单,允许用户从所有可用值中进行选择。

        widgetOptions: 
            filter_functions: 
                3: true,
                4: true
            
        

当页面加载并初始填充表格时,这些功能可以正常工作。为我的两列中的每一列创建一个下拉列表,它包含所有值。选择一个值会正确过滤该值。

但是,当页面运行时将新行动态添加到表中时,我的问题就出现了。添加包含新值的新行时,下拉菜单中的值不会刷新。触发“更新”、“更改”等似乎不起作用。

有没有办法在运行时向表中添加新行时动态更新这个标准过滤函数?

【问题讨论】:

【参考方案1】:

嗯,这似乎是过滤器小部件的问题。我已经修复了它和updated the tablesorter repository(现在是 v2.7.2)

Here's a demo 显示它现在可以工作了 :)

感谢您报告此问题!

注意:我无法在没有任何代码的情况下提交此答案,因此您应该这样更新表格:

$('table')
    .find('tbody').append(newRow)
    .trigger('update');

【讨论】:

谢谢,莫蒂!非常感谢您的超快速响应! 我得到了最新的并且这个解决方案有效。但是,使用此代码引入了新问题:当新数据更新时,选择更新,但是,如果用户选择了一个选项,则选择“选择”重新填充时,则不会保存用户选择。例如,在您的 Fiddle 中 - 单击“Bruce”,然后单击“Add Row”。 “布鲁斯”的选项被重置,表格刷新。 更新:我修复了上述问题。在 buildSelect() 中,我只获取值(如果存在)并将其存储到重新构建选择为止。如果有一个值,那么我在最后重新填充它。 @digitalbart 此代码可能已在 Mottie 的最新版本中修复,但回过头来看,这就是我所做的。在 buildSelect() 的开头,将 var 设置为当前选择。 var currentSelection = $t.find('thead').find('select.' + css + '[data-column="' + i + '"]')[0].value; 在 buildSelect() 方法的最后,可以说$t.find('thead').find('select.' + css + '[data-column="' + i + '"]')[0].value = currentSelection; select 的重置让我很生气!感谢@PatrickD 提供此解决方案;它解决了我的问题!

以上是关于更新 JQuery Tablesorter 过滤器函数的主要内容,如果未能解决你的问题,请参考以下文章

jQuery tablesorter 插件在 AJAX 调用后不起作用

Tablesorter 过滤器小部件,Tablesorter-filter 和分页问题

jQuery插件 tablesorter 表格排序 使用说明

jQuery插件 tablesorter 表格排序 使用说明

jquery.tablesorter 使用

Jquery:TableSorter-具有特定格式的日期不起作用