如何解决jQuery数据表如何获取已过滤可见的行
| 我有一个将筛选器应用于jquery数据表的按钮$(\"#buttonFilter\").button().click(function() {
if (lboxColor.val() != null) {
jqTable.fnFilter($(\"option:selected\",lboxColor).text(),1);
}
});
例如,它显示了60的47行。
我尝试了.fnGetData()和fnGetNodes(),但它显示了所有行,但未过滤。
我怎么能得到47行?
解决方法
我一直在搜索一个小时,对于使用DataTables 1.10+的任何人,如果您想获得过滤后的行(更好的术语:“ searched”),都可以:
var table = $(\'.table\').DataTable({...});
function selectOnlyFiltered(){
var filteredRows = table.rows({filter: \'applied\'});
}
, 对于数据表1.9及更高版本,此解决方案有效:
myDataTableHandle = $(\'#example1\').dataTable(...);
...
...
var myFilteredRows = myDataTableHandle._(\'tr\',{\"filter\":\"applied\"});
而且您不必包含单独的api插件。 :)
, 万一您想要像fngetNodes()这样的节点(DOM元素)集合,则可以使用\'$ \'代替\'_ \',例如this3ѭ
\'_ \'返回\'TR \'(html元素)的集合。
, 对于那些感兴趣的人,这是一个具体的用例。
/**
* Select all the elements of the datatable which match the current user
* search (or all if no search).
*/
function dtable_selectAll()
{
idTable = \'myDataTable\';
var rows = $(\'#\' + idTable).dataTable()
.$(\'tr\',{\"filter\":\"applied\"});
var oTT = TableTools.fnGetInstance(idTable);
$(rows).each(function (index,el){
oTT.fnSelect(el);
})
}
希望能帮助到你。
, 在当前版本中,选择器-修饰符使用一组稍有不同的属性。
var table = $(\'#example\').DataTable();
var rows = table.rows({\"search\" : \"applied\"});
您可以像这样遍历单元格数据:
table.rows({\"search\":\"applied\" }).every( function () {
var data = this.data();
});
一些有用的链接:
https://datatables.net/reference/api/rows()
https://datatables.net/reference/type/selector-modifier
https://datatables.net/reference/api/rows().every()
, 仅出于完整性考虑,正如Yuri所提到的,有一些“插件”将提供经过过滤的TR节点或数据。
要使用这些插件,您需要将这些链接中的代码粘贴到脚本文件中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。