JavaScript. Подробное руководство, 6-е издание
Шрифт:
Универсальным методом фильтрации выбора по позиции является метод
slice.
Этот метод действует подобно методу Array.slice
: он принимает начальный и конечный индексы (отрицательные индексы откладываются от конца массива) и возвращает объект jQuery
, содержащий элементы с индексами от начального до конечного, не включая его. Если конечный индекс не указан, возвращаемый объект будет содержать все элементы от начального индекса и до конца:
$("p").slice(2,5) // Выберет 3-й, 4-й и 5-й элементы <р>
$("div").slice(-3) //
Последние три элемента <div>
Метод
filter
является универсальным методом фильтрации и может использоваться тремя разными способами: • Если передать методу
filter
строку с селектором, он вернет объект jQuery
, содержащий только те из выбранных элементов, которые соответствуют этому селектору. • Если передать методу
filter
другой объект jQuery
, он вернет новый объект jQuery
, содержащий пересечение множеств элементов в двух исходных объектах jQuery
. Методу можно также передать массив элементов и даже единственный элемент документа. • Если передать методу
filter
функцию-предикат, эта функция будет вызвана для каждого выбранного элемента и метод filter
вернет объект jQuery
, содержащий только те элементы, для которых функция-предикат вернет true (или любое другое истинное значение). Элемент будет передан функции в виде значения ссылки this
, а индекс элемента - в виде аргумента. (Смотрите также описание метода jQuery.grep
в разделе 19.7.)
$("div").filter(".note") // Аналогично $("div.note")
$("div").filter($(".note")) // Аналогично $("div.note")
$("div").filter(function(idx) { return idx%2==0 }) // Аналогично $("div:even")
Метод
not
действует точно так же, как метод filter,
за исключением того, что он инвертирует значение фильтра. Если передать методу not
строку с селектором, он вернет новый объект jQuery
, содержащий только те из выбранных элементов, которые не соответствуют селектору. Если передать методу not
объект jQuery
, массив элементов или единственный элемент, он вернет все выбранные элементы, кроме тех, что были явно указаны. Если передать методу not
функцию-предикат, он вызовет ее для каждого выбранного элемента, как и метод filter,
но вернет объект jQuery
, содержащий только те выбранные элементы, для которых функция возвратит false или любое другое ложное значение:
$("div").not("#header, #footer"); // Все элементы <div>, кроме двух указанных
В версии jQuery 1.4 имеется метод
has,
обеспечивающий еще один способ фильтрации выбора. Если ему передать селектор, он вернет новый объект jQuery
, содержащий только те из выбранных элементов, которые имеют потомков, соответствующих селектору. Если передать методу has
$("р").has("а[href]") // Абзацы, включающие ссылки
Метод
add
не фильтрует и не сужает выбор, а расширяет его. Метод add
можно вызывать с любыми аргументами (кроме функций), которые можно передавать функции $
. Он возвращает первоначальное множество выбранных элементов, плюс элементы, которые были бы выбраны (или созданы) при передаче этих же аргументов функции $
. Метод add
удаляет повторные вхождения элементов и сортирует элементы в порядке их следования в документе:
// Эквивалентные способы выбора всех элементов <div> и <р>
$("div, р") // Используется группа селекторов
$("div").add("p") // Передать методу add селектор
$("div").add($("p")) // Передать методу add объект jQuery
var paras = document.getElementsByTagName("p"); // Объект, подобный массиву
$("div").add(paras); // Передать методу add массив элементов
19.8.2.1. Использование результатов выбора в качестве контекста
Методы
filter, add
и not,
описанные выше, возвращают пересечение, объединение и разность независимых множеств выбранных элементов. Библиотека jQuery определяет также несколько других методов выбора, которые используют текущее множество выбранных элементов в качестве контекста. Для каждого выбранного элемента эти методы создают новое множество, используя выбранный элемент в качестве контекста, или отправной точки, и возвращают новый объект jQuery
, содержащий объединение этих множеств. Как и метод add,
эти методы удаляют повторные вхождения одних и тех же элементов и сортируют их в порядке следования в документе. Наиболее универсальным в этой категории методов выбора является метод
find
. Он выполняет поиск потомков в каждом выбранном элементе, соответствующих указанной строке селектора, и возвращает новый объект jQuery
, представляющий новое множество соответствующих потомков. Обратите внимание, что вновь выбранные элементы не объединяются с существующим множеством - они возвращаются в виде нового множества элементов. Отметьте также, что метод find
отличается от метода filter,
который просто сужает текущее множество выбранных элементов, не добавляя новых:
$("div").find("p") // Отыскать элементы <р> в <div>. То же, что и $("div р")
Другие методы из этой категории возвращают новые объекты
jQuery
, представляющие дочерние, братские или родительские элементы для каждого выбранного элемента. Чаще всего им передается необязательный строковый аргумент с селектором. При вызове без селектора они возвращают, соответственно, все дочерние, братские или родительские элементы. При вызове с селектором они фильтруют список и возвращают только элементы, соответствующие селектору.
Поделиться:
Популярные книги
Геном хищника. Книга седьмая
7. Я - Легенда!
Фантастика:
боевая фантастика
рпг
фэнтези
попаданцы
5.00
рейтинг книги
Мальвиль
Фантастика:
социально-философская фантастика
научная фантастика
альтернативная история
8.29
рейтинг книги
Я все еще барон
4. Дорогой барон!
Фантастика:
боевая фантастика
5.00
рейтинг книги
Поводырь
3. Ботаник
Фантастика:
фэнтези
6.17
рейтинг книги
Технарь
1. Технарь
Фантастика:
космическая фантастика
попаданцы
7.13
рейтинг книги
Бастард Бога (Дилогия)
Фантастика:
альтернативная история
5.11
рейтинг книги
Эфемер
7. Стеллар
Фантастика:
боевая фантастика
рпг
7.23
рейтинг книги
Тринадцатый IX
9. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
сказочная фантастика
5.00
рейтинг книги
Звездная Кровь. Экзарх II
2. Экзарх
Старинная литература:
прочая старинная литература
5.00
рейтинг книги
Лекарь Империи 7
7. Лекарь Империи
Фантастика:
городское фэнтези
аниме
боевая фантастика
попаданцы
5.00
рейтинг книги
Печать Пожирателя
4. Пожиратель
Фантастика:
аниме
сказочная фантастика
фэнтези
попаданцы
5.00
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 11
11. История Телепата
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 8
8. Путь Паладина
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Том 3. Рассказы 1896-1899
3. Собрание сочинений в тридцати томах
Проза:
русская классическая проза
5.00