var filterBy = function(tableType) { $.fn.dataTableExt.afnFiltering.length = 0; $.fn.dataTable.ext.search.push( function( settings, data, dataIndex ) { var type = data[data.length - 2]; // use data for the Type column, which is the second to last if ( type == tableType || tableType=='All' ) { return true; } return false; } ); } $(document).ready(function() { var activeObject; var table = $('#database_objects').DataTable( { lengthChange: false, paging: config.pagination, pageLength: 50, order: [[ 0, "asc" ]], buttons: [ { text: 'All', action: function ( e, dt, node, config ) { filterBy('All'); if (activeObject != null) { activeObject.active(false); } table.draw(); } }, { text: 'Tables', action: function ( e, dt, node, config ) { filterBy('Table'); if (activeObject != null) { activeObject.active(false); } this.active( !this.active() ); activeObject = this; table.draw(); } }, { text: 'Views', action: function ( e, dt, node, config ) { filterBy('View'); if (activeObject != null) { activeObject.active(false); } this.active( !this.active() ); activeObject = this; table.draw(); } }, { extend: 'columnsToggle', columns: '.toggle' } ] } ); //schemaSpy.js dataTableExportButtons(table); } );