Filter 如何组合自定义筛选函数、自定义selectSource和动态表填充?

Filter 如何组合自定义筛选函数、自定义selectSource和动态表填充?,filter,tablesorter,Filter,Tablesorter,我正在尝试将中的方法结合起来,添加一个自定义筛选选项,用于选择空单元格和一个动态填充的表。不幸的是,我发现在更新表的内容之后,下拉列表中没有重新填充数据中更新的选项 我在这里创建了一个例子来说明这个问题。最初,该表只包含3行,第一列的filter下拉列表正确显示了这些选项,以及用于向下筛选到空行的“(Empty)”选项 单击向表中添加更多数据的按钮后,“自定义”的过滤器下拉列表现在应该包含附加选项(“饼干”和“香肠”)以及以前存在的选项,就像“默认”列一样。不幸的是,这没有发生 $(函数(){

我正在尝试将中的方法结合起来,添加一个自定义筛选选项,用于选择空单元格和一个动态填充的表。不幸的是,我发现在更新表的内容之后,下拉列表中没有重新填充数据中更新的选项

我在这里创建了一个例子来说明这个问题。最初,该表只包含3行,第一列的filter下拉列表正确显示了这些选项,以及用于向下筛选到空行的“(Empty)”选项

单击向表中添加更多数据的按钮后,“自定义”的过滤器下拉列表现在应该包含附加选项(“饼干”和“香肠”)以及以前存在的选项,就像“默认”列一样。不幸的是,这没有发生

$(函数(){
$(“#tblsort”).tablesorter({
主题:“默认”,
小部件:[“过滤器”],
widgetOptions:{
过滤器功能:{
1:{'(空)':函数(e,n,f,i,$r,c){return$.trim(n)='';}
},
过滤器\u选择源:{
1:函数(表、列、仅有效){
var数组=$.tablesorter.filter.getOptions(表、列、onlyAvail);
array.unshift(‘(空)’);
返回数组;
}
}
}
});
$(“#addbtn”)。单击(函数(){
//假设这实际上是使用AJAX或其他方式加载的数据
$(“#tblsort tbody”)。追加(“4饼干”);
$(“#tblsort tbody”)。追加(“5”);
$(“#tblsort tbody”)。追加(“6条香肠用法”);
$(“#tblsort”).trigger(“更新”,[true]);
});
});

#
习俗
违约
1福福
2.
3巴巴拉

添加更多数据
可能不是一个理想的解决方案-我已经有一段时间没有查看代码了,因此我记不起更新选择的最佳方法-但此方法有效:

$("#addbtn").click(function(){
  // Pretend this is actually data loaded using AJAX or whatever
  $("#tblsort tbody").append("<tr><td>4</td><td>Biscuit</td><td>Biscuit</td></tr>");
  $("#tblsort tbody").append("<tr><td>5</td><td></td><td></td></tr>");
  $("#tblsort tbody").append("<tr><td>6</td><td>Sausages</td><td>Sausages</td></tr>");

  $("#tblsort").trigger("update", [true]);
  $.tablesorter.filter.buildSelect( $("#tblsort"), 1, '', true, true);
});
$(“#addbtn”)。单击(函数(){
//假设这实际上是使用AJAX或其他方式加载的数据
$(“#tblsort tbody”)。追加(“4饼干”);
$(“#tblsort tbody”)。追加(“5”);
$(“#tblsort tbody”)。追加(“6条香肠用法”);
$(“#tblsort”).trigger(“更新”,[true]);
$.tablesorter.filter.buildSelect($(“#tblsort”)、1',true,true);
});

我添加了一个函数调用以强制重建。

在没有任何更优化的情况下,我很高兴添加这个额外的调用-正如您所说,它是有效的,我没有看到任何意外问题或副作用。非常感谢。