是否可以通过数据属性过滤jQuery DataTable?

Seb*_*bbo 6 jquery datatables

我想知道是否可以通过其中一个数据属性而不是其单元格的内容来过滤jQuery DataTable.要将过滤器动态应用于列,可以使用此调用:

$table.fnFilter('^(Some value)$', columnIndex, true, false);
Run Code Online (Sandbox Code Playgroud)

这将使用正则表达式默认过滤单元格的确切内容.但是,假设我的单元格是这样构造的:

<td data-label="Active"><i class="fa fa-check fa-lg"></i></td>
Run Code Online (Sandbox Code Playgroud)

要么

<td data-label="Active">Active<br /><span class="mute">Some text</span></td>
Run Code Online (Sandbox Code Playgroud)

我希望能够通过属性的确切内容data-label而不是单元格内容来使用DataTable过滤器.是否在表init上设置列时定义搜索类型?或者有没有办法定义按属性而不是内容过滤?

dav*_*rad 10

如果要按代码触发过滤器,请创建自定义过滤器:

$.fn.dataTable.ext.search.push(
   function(settings, data, dataIndex) {
      var dataLabel = table
          .row(dataIndex)         //get the row to evaluate
          .nodes()                //extract the HTML - node() does not support to$     
          .to$()                  //get as jQuery object 
          .find('td[data-label]') //find column with data-label
          .data('label');         //get the value of data-label
      return dataLabel  == 'Active'; 
   }     
);
Run Code Online (Sandbox Code Playgroud)

演示 - > http://jsfiddle.net/x83zm7qq/

如果您只想data-label在用户在搜索框中键入时将其用作过滤目标,则可以重命名data-labeldata-searchdata-filter:

<td data-search="Active"><i class="fa fa-check fa-lg"></i></td>
Run Code Online (Sandbox Code Playgroud)

dataTables将其称为正交数据.

  • 是的,做到了.在`td`元素中具有`data-search`或`data-filter`属性允许我按其值过滤单元格.谢谢! (2认同)
  • @davidkonrad 这不适用于 1.10 版本。有什么想法如何获取此函数中的“数据排序”值吗? (2认同)