Чтение онлайн

на главную - закладки

Жанры

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
, представляющие дочерние, братские или родительские элементы для каждого выбранного элемента. Чаще всего им передается необязательный строковый аргумент с селектором. При вызове без селектора они возвращают, соответственно, все дочерние, братские или родительские элементы. При вызове с селектором они фильтруют список и возвращают только элементы, соответствующие селектору.

Поделиться:
Популярные книги

"Охотник". Компиляция. Книги 1-12

Усманов Хайдарали
Собрание сочинений
Фантастика:
боевая фантастика
5.00
рейтинг книги
Охотник. Компиляция. Книги 1-12

Идентификация

Уленгов Юрий
3. Гардемарин ее величества
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Идентификация

Поезд смерти (Сборник)

Бирн Роберт
Мастера остросюжетного романа
Детективы:
техно триллер
6.25
рейтинг книги
Поезд смерти (Сборник)

Последний Паладин. Том 4

Саваровский Роман
4. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.25
рейтинг книги
Последний Паладин. Том 4

Фантастические рассказы из журнала «Вокруг света»

Михеев Михаил Петрович
Фантастика:
научная фантастика
5.00
рейтинг книги
Фантастические рассказы из журнала «Вокруг света»

Повседневная жизнь Монпарнаса в Великую эпоху. 1903-1930 гг.

Креспель Жан-Поль
Живая история: Повседневная жизнь человечества
Документальная литература:
прочая документальная литература
5.00
рейтинг книги
Повседневная жизнь Монпарнаса в Великую эпоху. 1903-1930 гг.

Князь Медведев. Дилогия

Вяч Павел
Медведев
Фантастика:
аниме
фэнтези
попаданцы
5.75
рейтинг книги
Князь Медведев. Дилогия

Реквием

Единак Евгений Николаевич
5.00
рейтинг книги
Реквием

Нью-Йорк

Резерфорд Эдвард
The Big Book
Проза:
историческая проза
6.00
рейтинг книги
Нью-Йорк

Первопроходец

Астахов Евгений Евгеньевич
10. Сопряжение
Фантастика:
боевая фантастика
постапокалипсис
рпг
фэнтези
5.00
рейтинг книги
Первопроходец

Я снова князь. Книга XXIII

Дрейк Сириус
23. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.00
рейтинг книги
Я снова князь. Книга XXIII

Дважды одаренный

Тарс Элиан
1. Дважды одаренный
Фантастика:
альтернативная история
аниме
фэнтези
фантастика: прочее
попаданцы
5.40
рейтинг книги
Дважды одаренный

Неудержимый. Книга III

Боярский Андрей
3. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Неудержимый. Книга III

Иллюстрированная Библия. Ветхий Завет

Коллектив авторов
Религия и эзотерика:
религия
5.00
рейтинг книги
Иллюстрированная Библия. Ветхий Завет