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
193 +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
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 96 424 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир