Вы можете заменить содержимое заголовков столбцов, используя .appendTo( $(column.header()).empty() )
.Вы также можете добавить списки событий в initComplete
-callback и прикрепить их непосредственно к входам.
const dataSet = [
["Tiger Nixon", "System Architect", "Edinburgh", "5421", "2011/04/25", "$320,800"],
["Garrett Winters", "Accountant", "Tokyo", "8422", "2011/07/25", "$170,750"],
["Lorem ipsum", "Accountant", "Edinburgh", "1562", "2011/07/25", "$86,000"],
["Ashton Cox", "Junior Technical Author", "San Francisco", "1562", "2009/01/12", "$86,000"],
];
const dataTable = $('#example').DataTable({
data: dataSet,
dom: 't',
columns: ['Name', 'Job Title', 'Location', 'Id', 'Hire Date', 'Salary'].map(header => ({
title: header
})),
initComplete: function () {
this.api().columns().every( function () {
let column = this;
let select = $('<select><option value="">All</option></select>')
.appendTo( $(column.header()).empty() )
.on( 'change, click', function ( e ) {
e.stopPropagation();
let val = $.fn.dataTable.util.escapeRegex( $(this).val() );
column.search( val ? '^'+val+'$' : '', true, false ).draw();
});
column.data().unique().sort().each( function ( d, j ) {
select.append( '<option value="'+d+'">'+d+'</option>' )
});
});
}
});
<link href="//cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="//cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
<table id="example">
</table>