Я использую плагин jquery Datatables 1.10 и хочу использовать пользовательский поиск для фильтрации двух таблиц на одной странице, например:
function filterTableByErrorClass(propertiesTable, errorClassName) {
$.fn.dataTable.ext.search.pop();
$.fn.dataTable.ext.search.push(
function(settings, data, dataIndex) {
return $(propertiesTable.row(dataIndex).node()).find('td > div').hasClass(errorClassName);
});
propertiesTable.draw();
}
Моя проблема в том, что это работает только для одной таблицы, той, которая готова при загрузке страницы. Другой находится внутри модального js и загружается с помощью вызова ajax (см. Ниже). Он загружается как HTML и после загрузки должен вести себя так же, как и другая таблица, например, вся фильтрация должна выполняться на стороне клиента.
$("div.modal.edit-category-info").on('shown.bs.modal', function () {
req = $.ajax({
url: "some_url",
method: "GET",
success: function(data) {
$('#modalContent').html(data);
if ( $.fn.dataTable.isDataTable( '#edit-category-table' ) ) {
editCategoryTable = $('#edit-category-table').DataTable();
}
else {
editCategoryTable = $('#edit-category-table').DataTable( {
"searching": false,
"paging": false,
"ordering": false,
"bInfo" : false
} );
}
errorValidator("edit-category-table");
attachFilteringEvents("edit-category-form");
},
});
});
У меня есть кнопка для обеих таблиц, которая вызывает функцию filterTableByErrorClass (), и я могу убедиться, что она вызывается в обоих случаях, поместив точку останова в первую строку. Однако, если я помещаю точку останова внутри функции фильтрации (внутри filterTableByErrorClass ()), эта цель получает удар только при фильтрации первой таблицы, а не при попытке отфильтровать модальную таблицу.
Является ли $ .fn.dataTable.ext.search каким-то образом не осведомленным о новой модальной таблице? Могу ли я сделать это как-нибудь?