Подтвердить что ты не робот

Функция Javascript DataTables - filter() не работает должным образом

Я использую библиотеку javscript DataTables, и я пытаюсь отфильтровать вывод строки на основе, если числовое значение больше 60.

Я пытаюсь следовать этому примеру: http://datatables.net/reference/api/filter%28%29

Код фильтра выглядит следующим образом:

table
    .column( 3 )
    .data()
    .filter( function ( value, index ) {
        return value > 60 ? true : false;
    } )

Проблема заключается в том, что все строки все еще видны, и фильтрация вообще не выполняется. Даже если моя функция просто возвращает false, все строки все еще видны. Что здесь происходит?

JSПримечание примера

http://jsfiddle.net/1hLcpr3x/

4b9b3361

Ответ 1

Пример, на который вы ссылаетесь, - это фильтрация возвращаемого массива данных из столбцов, а не самих строк.

Вы можете проверить это, вернув содержимое и зарегистрировав его

var filteredArray = table.column( 3 )
                         .data()
                         .filter( function(value, index) {
                             return value > 60 ? true : false;
                         })
                         .draw();

console.log(filteredArray);

FIDDLE

Это метод filter, он фильтрует данные, когда вы возвращаете его с помощью data(), а не строк.

Чтобы отфильтровать строки на месте, вы подключаетесь к плагину DataTables, а точнее $.fn.dataTableExt.afnFiltering и делаете что-то вроде этого

$.fn.dataTableExt.afnFiltering.push(
    function (oSettings, aData, iDataIndex) {
        return aData[3] < 60;
    }
);

FIDDLE

Документация для фильтрации DataTables