Справочник API
.filter() в jQuery
Содержание статьи
-
Категории: Traversing › Filtering
Удаляет из набора jQuery элементы, используя для фильтрации заданный селектор jQuery или функцию.
Синтаксис и описание:
Добавлено в jQuery 1.0.filter( selector )
Добавлено в jQuery 1.0.filter( function( index, element ) )
Добавлено в jQuery 1.4.filter( elements )
Добавлено в jQuery 1.4.filter( selection )
Метод .filter() строит новый набор jQuery из подмножества элементов исходного набора — остаются только те, что соответствуют критерию. Критерий: CSS/jQuery-селектор строкой, функция-предикат
function(index, element)(вызывается для каждого элемента,thisсовпадает с element, должна вернутьtrue/false), один или несколько DOM-элементов, либо готовый набор jQuery.Важно не путать с соседними методами: .find() ищет среди потомков элементов набора, а .filter() проверяет сами элементы набора, не заглядывая вглубь. Метод .not() делает обратное — оставляет элементы, не подходящие под критерий, то есть .filter() и .not() с одинаковым аргументом в сумме дают исходный набор.
Возвращаемое значение: (объект) Набор jQuery — подмножество исходного, порядок сохраняется.
Параметры:
selector – (строка) селектор для проверки каждого элемента набора.
function( index, element ) – (функция) index — позиция элемента, element — сам DOM-элемент (совпадает с
this); должна вернутьtrue, чтобы включить элемент в результат.elements – (элемент DOM | массив) один или несколько DOM-элементов для сверки.
selection – (объект jQuery) готовый набор для сверки.
Примечание:
При фильтрации по строковому селектору текстовые и комментарийные узлы всегда исключаются из результата — в отличие от фильтрации по массиву узлов, где они могут сохраниться.
Примечание:
Как и везде в jQuery, синтаксически некорректный селектор в .filter() приведёт к ошибке — в отличие от функции-предиката, которая просто вернёт
falseдля «непроходящих» элементов.В jQuery 3.x и 4.0:
Метод не менялся, работает без изменений в 3.7.1 и 4.0. Нативный аналог для массива или NodeList —
Array.prototype.filter(callback)(послеArray.from(nodeList)); для проверки одного элемента на соответствие селектору —Element.matches(selector). Больше о выборе между селекторами и методами фильтрации — в статье селекторы jQuery.
Примеры:
Оставить только чётные (по порядку) элементы списка — функцией, вместо deprecated селектора :even.
$('li').filter(function(index) { return index % 2 === 0; }).addClass('even-row');Отфильтровать поля формы по атрибуту.
$('input').filter('[required]').addClass('is-required');Отфильтровать элементы, уже входящие в другой набор jQuery.
var checked = $('input:checkbox:checked'); $('input').filter(checked).closest('tr').addClass('selected');