Datatables 我可以从jQuery数据表中检索列/搜索特定数据吗?

Datatables 我可以从jQuery数据表中检索列/搜索特定数据吗?,datatables,Datatables,我目前正在为一个在jQuery数据表中显示成员数据的web应用程序开发一个页面。我正在为DataTable构建一个自定义插件,它允许对每个表列进行广泛的过滤 我当前的任务是能够从DataTable中检索过滤后的数据,但不更新表中的数据。我知道通过执行以下操作可以检索所有过滤数据: var data = $table.dataTable().$('tr', { filter: 'applied' }); 这将获取搜索框中任何文本的数据以及应用于列的任何筛选器。我还知道这个调用会获取单元格的jQu

我目前正在为一个在jQuery数据表中显示成员数据的web应用程序开发一个页面。我正在为DataTable构建一个自定义插件,它允许对每个表列进行广泛的过滤

我当前的任务是能够从DataTable中检索过滤后的数据,但不更新表中的数据。我知道通过执行以下操作可以检索所有过滤数据:

var data = $table.dataTable().$('tr', { filter: 'applied' });
这将获取搜索框中任何文本的数据以及应用于列的任何筛选器。我还知道这个调用会获取单元格的jQuery选择器。这就是我需要的。但是我需要更多

我的问题是:

  • 我是否可以只应用搜索框中的内容而不对列应用任何其他当前筛选器来获取数据?我试过:

    var data=$table.dataTable().$('tr',{search:'applied'})

  • 但它返回的结果与{filter:'applied'}相同

  • 我是否可以针对特定列获取数据,例如:

    var data=$table.dataTable().$('tr',{filter:'applied',列:[1,2,5]})

  • 我可以针对特定的列和搜索框中的内容吗


  • 我的插件需要能够跟踪应用了各种列/搜索过滤器组合的数据。

    对于DataTables 1.9

    有一个API方法,但它对表应用过滤,这不是您想要的

    或者,您可能希望使用获取整个表的数据并自己进行筛选

    用于数据表1.10

    有一个API方法,但当与
    draw()
    一起使用时,它会对表应用过滤,这不是您想要的

    还有API方法。这不完全是你要找的,但是非常接近,但是你需要自己执行搜索

    您可以按如下方式检索搜索框的内容:

    var searchVal=$('.dataTables\u filter input',$table).val();
    
    然后您需要自己进行搜索,如下所示是一种过于简单的方法,可能与DataTables内部执行搜索的方式不匹配

    要仅搜索第一列和第二列,请指定
    [0,1]
    列()
    方法。如果未指定参数,则将搜索所有列

    var filteredData=$table.DataTable()
    .列([0,1])
    .data()
    .eq(0)
    .过滤器(函数(值、索引){
    returrn(value.search(新的RegExp(searchVal,“i”)!=-1)
    ?真:假;
    } );
    
    根据手册,变量
    filteredData
    将包含一个新的API实例,其中包含通过回调测试的结果集的值


    要检索所有列或选定列的数据,请使用。

    +1获得最佳答案!我可以看到我如何执行自己的搜索算法,以实现我想要的结果。我曾考虑过这种方法,但希望{filter:'applied'}调用具有列和/或单个搜索值的参数。看来情况并非如此。我想让我的插件适用于1.9和1.10+版本,因此我将无法使用新的api语法。@Sebbo,当你在问题中使用
    filter时说:“applied”
    获取搜索框中任何文本和应用于列的任何过滤器的数据,除了搜索框之外的任何过滤器是什么意思?也许解决办法比我想象的要简单。
    $table.DataTable().rows({search:'applied'}).nodes().to$()
    是否适用于您?我的意思是,如果存在仅应用于列的筛选器,例如
    $table.fnFilter('some filter text',columnIndex))然后该过滤器将包含在
    过滤器:“应用”调用中。现在,我有一个解决方案(针对1.9版),它将您的想法与其他一些逻辑结合起来。将你的答案标记为最佳答案。