Справочник 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) готовый набор для сверки.

  1. Примечание:

    При фильтрации по строковому селектору текстовые и комментарийные узлы всегда исключаются из результата — в отличие от фильтрации по массиву узлов, где они могут сохраниться.

  2. Примечание:

    Как и везде в jQuery, синтаксически некорректный селектор в .filter() приведёт к ошибке — в отличие от функции-предиката, которая просто вернёт false для «непроходящих» элементов.

  3. В jQuery 3.x и 4.0:

    Метод не менялся, работает без изменений в 3.7.1 и 4.0. Нативный аналог для массива или NodeList — Array.prototype.filter(callback) (после Array.from(nodeList)); для проверки одного элемента на соответствие селектору — Element.matches(selector). Больше о выборе между селекторами и методами фильтрации — в статье селекторы jQuery.

Примеры:

  1. Оставить только чётные (по порядку) элементы списка — функцией, вместо deprecated селектора :even.

    $('li').filter(function(index) {
      return index % 2 === 0;
    }).addClass('even-row');
  2. Отфильтровать поля формы по атрибуту.

    $('input').filter('[required]').addClass('is-required');
  3. Отфильтровать элементы, уже входящие в другой набор jQuery.

    var checked = $('input:checkbox:checked');
    $('input').filter(checked).closest('tr').addClass('selected');

[ наверх ]

Вопросы и ответы

Для чего используется .filter() в jQuery?

Удаляет из набора jQuery элементы, используя для фильтрации заданный селектор jQuery или функцию.

Поиск по материалам

Начните вводить — поиск работает по заголовкам и тексту.

Esc — закрытьВсе материалы →