Фильтрация коллекций элементов — одна из ключевых возможностей jQuery, позволяющая эффективно работать с набором элементов DOM. Основная цель фильтрации — выбрать из уже существующей коллекции только те элементы, которые соответствуют заданным критериям. jQuery предоставляет для этого несколько методов с различными способами определения условий.
.filter()Метод .filter() позволяет создавать новую коллекцию из
элементов исходного набора, удовлетворяющих указанному селектору,
функции или элементу.
Синтаксис:
$(селектор).filter(условие)
Параметры:
селектор — строка CSS-селектора. Элементы, соответствующие этому селектору, остаются в коллекции.
функция(index, element) — функция обратного
вызова, возвращающая true для элементов, которые должны
быть включены в новую коллекцию.
index — порядковый номер элемента в исходной
коллекции.element — текущий элемент DOM.Примеры:
// Фильтрация по классу
$('li').filter('.active');
// Фильтрация по содержимому через функцию
$('li').filter(function(index, element) {
return $(element).text().includes('jQuery');
});
Метод .filter() всегда возвращает новый объект jQuery.
Исходная коллекция не изменяется.
.not()Метод .not() выполняет противоположную задачу: исключает
из коллекции элементы, соответствующие заданному критерию.
Синтаксис:
$(селектор).not(условие)
Примеры:
// Исключение элементов с классом .disabled
$('button').not('.disabled');
// Исключение элементов по функции
$('li').not(function(index, element) {
return $(element).text().startsWith('A');
});
Метод .not() полезен для удаления элементов из коллекции
без необходимости изменять исходный DOM напрямую.
.has()Метод .has() фильтрует элементы исходной коллекции,
оставляя только те, которые содержат внутри себя указанный селектор.
Синтаксис:
$(селектор).has(внутреннийСелектор)
Примеры:
// Все div, содержащие хотя бы один элемент p
$('div').has('p');
// Сложная фильтрация с несколькими уровнями
$('ul').has('li.active');
Метод .has() удобно использовать для поиска контейнеров
с определённым содержимым.
.is()Метод .is() проверяет, соответствует ли хотя бы один
элемент в коллекции указанному селектору, функции или объекту jQuery. Он
возвращает булево значение (true или
false).
Синтаксис:
$(селектор).is(условие)
Примеры:
// Проверка наличия элемента с классом .highlight
if ($('li').is('.highlight')) {
console.log('Есть выделенные элементы');
}
// Проверка через функцию
if ($('li').is(function(index, element) {
return $(element).text() === 'Important';
})) {
console.log('Найден важный элемент');
}
.is() часто используется для условий в логике
программного кода, когда необходимо узнать, есть ли элементы,
соответствующие определённому критерию.
.eq() и
фильтрация по индексуМетод .eq() выбирает один элемент из коллекции по
индексу. Используется для точечной фильтрации. Индексы могут быть
отрицательными, что позволяет отсчитывать элементы с конца
коллекции.
Синтаксис:
$(селектор).eq(индекс)
Примеры:
// Первый элемент списка
$('li').eq(0);
// Последний элемент списка
$('li').eq(-1);
Метод .eq() возвращает объект jQuery, что позволяет
применять к нему дальнейшие методы цепочкой.
.first() и
.last()Эти методы являются специализированными версиями .eq(),
возвращающими соответственно первый или последний элемент коллекции.
$('li').first(); // первый элемент
$('li').last(); // последний элемент
Использование этих методов повышает читаемость кода при работе с крайними элементами коллекции.
.slice()Метод .slice() позволяет выбрать подмножество элементов
коллекции по диапазону индексов, аналогично методу массива
JavaScript.
Синтаксис:
$(селектор).slice(start, end)
Примеры:
// Выбрать элементы со второго по четвертый
$('li').slice(1, 4);
Метод .slice() возвращает новый объект jQuery и не
изменяет исходную коллекцию.
jQuery позволяет комбинировать методы фильтрации для создания более сложных условий:
// Все активные li, кроме первого и последнего
$('li').filter('.active').not(':first').not(':last');
// Все div с классом .container, которые содержат p
$('div.container').has('p').filter(':visible');
Комбинация фильтров обеспечивает гибкость и лаконичность кода при работе с коллекциями элементов.
.filter(), .not(),
.has() и .is() принимают как
селекторы, так и функции, что расширяет возможности
динамического отбора элементов..eq(), .first(), .last() и
.slice().Фильтрация коллекций в jQuery — это фундаментальный инструмент для управления элементами страницы. Правильное использование этих методов позволяет писать компактный, читаемый и гибкий код, минимизируя прямые манипуляции с DOM и повышая производительность приложения.