我使用jQuery DataTables格式化表格,我想创建一个按钮来过滤所有页面上的行 。目前,过滤器(切换包含带有#bfbfff颜色的文本的行的可见性)仅适用于当前可见的页面。
我知道我必须使用DataTables API来完成这项工作,我只是不知道如何将现有的jQuery集成到API中。
$("a#notes").on("click", function() {
$("#example tbody tr").toggle();
$("#example tbody tr td span[style='color:#bfbfff;']").closest("tr").toggle();
} );
答案 0 :(得分:0)
您可以包含自己的过滤器,以使其适用于整个数据(所有页面)。阅读有关数据表here中的过滤的更多信息。
使用您的示例工作fiddle。
javascript必须是:
$(document).ready(function() {
var oTable = $('#example').dataTable();
$("a#notes").on("click", function() {
oTable.dataTableExt.afnFiltering.push(
function( oSettings, aData, iDataIndex ) {
var tr = oTable.fnGetNodes(iDataIndex);
var result=$(tr).find("td span[style='color:#bfbfff;']");
return result.length;
});
oTable.fnDraw();
});
});
答案 1 :(得分:0)
使用最新的DataTables API:
var _fieldNotesFilter = false;
$.fn.dataTable.ext.search.push( function ( settings, searchData, index, rowData, counter ) {
if ( settings.nTable.id !== 'example' ) {
return true;
}
if ( ! _fieldNotesFilter ) {
return true;
}
else if ( rowData.item.match(/rgb\(191, 191, 255/) || rowData.item.match(/#bfbfff/) ) {
return true;
}
return false;
} );
$(document).ready( function () {
$('#filter_notes').on( 'click', function () {
//Invert the filtering flag
_fieldNotesFilter = ! _fieldNotesFilter;
// Redraw the table to update the filtering change
$('#example').DataTable().draw();
} );
} );