Вход/Регистрация
JavaScript. Подробное руководство, 6-е издание
вернуться

Флэнаган Дэвид

Шрифт:

Иногда сложно уловить различия между методами объекта

jQuery
и функциями библиотеки jQuery, потому что многие методы и функции имеют одинаковые имена. Обратите внимание, что следующие две строки программного кода выполняют разные операции:

// Вызвать функцию each библиотеки jQuery, чтобы вызвать функцию f

// для каждого элемента массива а

$.each(a,f);

// Вызвать функцию jQuery, чтобы получить объект jQuery, представляющий

// все элементы <а> в документе. Затем вызвать метод each этого объекта jQuery,

// чтобы вызвать функцию f для каждого выбранного элемента.

$("a").each(f);

В официальной документации по библиотеке jQuery, которую можно найти на сайтетакие имена, как

$.each
, используются для ссылки на функции библиотеки jQuery, а такие имена, как .each (с точкой, но без знака доллара), - для ссылки на методы объекта
jQuery
. Вместо них в этой книге я буду использовать термины «функция» и «метод». Что именно подразумевается, обычно будет достаточно очевидно из контекста обсуждения.

*****************************************************

19.1.2. Запросы и результаты запросов

Когда функции

$
передается CSS-селектор, она возвращает объект
jQuery
, представляющий множество («выбранных») элементов, соответствующих селектору. С CSS-селекторами мы познакомились в разделе 15.2.5, куда вы можете вернуться, чтобы освежить память, - все примеры селекторов, представленные там, могут передаваться функции
$
. Конкретный синтаксис селекторов, поддерживаемый библиотекой jQuery, подробно будет рассматриваться в разделе 19.8.1. Однако, прежде чем углубиться в особенности синтаксиса селекторов, мы сначала разберемся с тем, что можно делать с результатами запроса.

Возвращаемым значением функции

$
является объект
jQuery
. Объекты
jQuery
– это объекты, подобные массивам: они имеют свойство
length
и свойства с числовыми именами, начиная с 0 до
length
– 1. (Подробнее об объектах, подобных массивам, рассказывается в разделе 7.11.) Это означает, что к содержимому объекта
jQuery
можно обращаться, используя стандартный синтаксис обращения к элементам массива с квадратными скобками:

$("body").length // => 1: документ имеет единственный элемент body

$("body”)[0] // То же самое, что document.body

Если при работе с объектом

jQuery
вы предпочитаете не использовать синтаксис массивов, вместо свойства
length
можно использовать метод
size,
а вместо индексов в квадратных скобках - метод
get.
Если потребуется преобразовать объект
jQuery
в настоящий массив, можно вызвать метод
toArray.

В дополнение к свойству

length
объекты
jQuery
имеют еще три свойства, представляющие определенный интерес. Свойство selector хранит строку селектора (если таковая имеется), которая использовалась при создании объекта
jQuery
. Свойство context ссылается на объект контекста, который был передан функции
$
во вто-ром аргументе, в противном случае оно будет ссылаться на объект Document. Наконец, все объекты
jQuery
имеют свойство jquery, проверка наличия которого является самым простым способом отличить объект
jQuery
от любого другого объекта* подобного массиву. Значением свойства jquery является строка с номером версии библиотеки jQuery:

// Отыскать все элементы <script> в теле документа

var bodyscripts = $("script", document.body);

bodyscripts.selector // => "script"

bodyscripts.context // => document.body

bodyscripts.jquery // => "1.4.2"

Если потребуется обойти в цикле все элементы в объекте

jQuery
, вместо цикла
for
можно использовать метод
each.
Метод
each
напоминает метод
forEach
массивов, определяемый стандартом ECMAScript 5 (ES5). В единственном аргументе он принимает функцию обратного вызова, которая будет вызвана для каждого элемента в объекте
jQuery
(в порядке следования в документе). Эта функция вызывается как метод элемента, т.е. внутри функции ключевое слово
this
ссылается на объект
Element
. Кроме того, метод
each
передает функции обратного вызова индекс и элемент в первом и втором аргументах. Обратите внимание, что ссылка
this
и второй аргумент ссылаются на обычные элементы документа, а не на объекты
jQuery
. Если для работы с элементом внутри функции потребуется использовать методы объекта
jQuery
, передайте этот элемент функции
$
.

Метод

each
объекта
jQuery
имеет одну особенность, которая существенно отличает его от метода
forEach:
если функция обратного вызова вернет false для какого-либо элемента, итерации будут остановлены после этого элемента (это напоминает использование ключевого слова
break
в обычном цикле). Метод
each
возвращает объект
jQuery
, относительно которого он был вызван, благодаря чему он может использоваться в цепочках вызовов методов. Например (здесь используется метод
prepend,
который будет описан в разделе 19.3):

  • Читать дальше
  • 1
  • ...
  • 344
  • 345
  • 346
  • 347
  • 348
  • 349
  • 350
  • 351
  • 352
  • 353
  • 354
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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