Jquery. Как сделать поиск в уже найденных элементах? Делаю фильтр на плагине Quicksand. И будет несколько групп параметров для поиска (предмет, класс школьников, уровень подготовки и т.д.)
Есть у меня контейнер с объектами для поиска (учебные курсы).var $courses = $('#coursesContainer');
Клонирую контейнер.var $data = $courses.clone();
Все курсы.$filteredData = $data.find('.course');
Потом пытаюсь найти во всем списке курсов только курсы по алгебре.$filteredData = $filteredData.end().find(.course[data-subject="Алгебра"]');
Затем в найденных курсах по алгебре хочу найти курсы только для 7-го класса.$filteredData = $filteredData.end().find(.course[data-class="7"]');
Однако поиск по классам работает криво. Ищет не в уже найденных курсах по алгебре, а во всех курсах целиком. Т.е. в результате поиска получаю все курсы для 7-го класса.
Что делаю не так?

21 Авг 2019 в 07:05
215 +1
0
Ответы
1

Проблема возникает из-за того, что метод find() ищет элементы внутри всех элементов в наборе, а не только в последнем найденном элементе. Для того чтобы выполнить поиск только в уже найденных элементах, можно воспользоваться методом filter(). Примерно так:

// Начальное клонирование контейнера
var $courses = $('#coursesContainer');
var $data = $courses.clone();
// Поиск курсов по алгебре
var $filteredData = $data.find('.course[data-subject="Алгебра"]');
// Фильтрация найденных курсов по классу 7
$filteredData = $filteredData.filter('.course[data-class="7"]');

Таким образом, в переменной $filteredData останутся только курсы по алгебре для 7-го класса.

20 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир