我想知道是否可以通过其中一个数据属性而不是其单元格的内容来过滤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-label为data-search或data-filter:
<td data-search="Active"><i class="fa fa-check fa-lg"></i></td>
Run Code Online (Sandbox Code Playgroud)
dataTables将其称为正交数据.