JavaScript. Подробное руководство, 6-е издание, стр. 295

В этой главе описывается библиотека jQuery версии 1.4. Если вы пользуетесь другой версией, замените номер версии «1.4.2» в URL-адресах выше на требуемый вам. [54]

Если вы пользуетесь сетью распространения Google CDN, вы можете указать номер версии «1.4», чтобы получить самую свежую версию в ветке 1.4.x, или просто «1», чтобы получить самую свежую версию ниже 2.0. Основное преимущество использования подобных широко известных адресов состоит в том, что благодаря огромной популярности jQuery посетители вашего веб-сайта наверняка будут иметь копию библиотеки в кэше своих броузеров, и веб-приложению не придется тратить дополнительное время на ее загрузку.

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

При третьем способе вызова функции

<b>$()</b>
передается строка с разметкой HTML. В этом случае библиотека jQuery создаст HTML-элемент или элементы, определяемые этой разметкой, и вернет представляющий их объект
<b>jQuery</b>
. Библиотека jQuery не вставляет вновь созданные элементы в документ, но методы объекта
<b>jQuery</b>
, описываемые в разделе 19.3, позволяют легко вставить их в любое место. Обратите внимание, что таким образом функции
<b>$()</b>
нельзя передать простой текст, так как в этом случае jQuery решит, что вы передали CSS-селектор. При таком способе вызова строка, передаваемая функции
<b>$()</b>
, должна включать хотя бы один HTML-тег в угловых скобках.

При вызове третьим способом функция

<b>$()</b>
может принимать необязательный второй аргумент. В нем можно передать объект
<b>Document</b>
, чтобы указать документ, которым должны быть связаны элементы. (Если, к примеру, предполагается, что создаваемые элементы будут вставлены в элемент
<b>&lt;iframe&gt;,</b>
необходимо явно указать объект документа этого фрейма.) Или передать объект во втором аргументе. В этом случае предполагается, что свойства объекта определяют имена и значения HTML-атрибутов, которые должны быть установлены во вновь созданном элементе. Но если объект будет содержать свойства с такими именами, как «css», «html», «text», «width», «height», «offset», «val» или «data», или свойства с именами, совпадающими с именами методов регистрации обработчиков событий в библиотеке jQuery, она будет вызывать методы с этими именами для вновь созданного элемента и передавать им значения соответствующих свойств. (Методы, такие как
<b>css(), html()</b>
и
<b>text()</b>
рассматриваются в разделе 19.2, а методы регистрации обработчиков событий - в разделе 19.4). Например:

<b>var img = $(&quot;&lt;img/&gt;&quot;,             // Создать новый элемент &lt;img&gt;</b>

<b>            { src:url,            //с этим HTML-атрибутом,</b>

<b>              css: {borderWidth:5}, // этим CSS-стилем</b>

<b>              click: handleClick // и этим обработчиком события.</b>

<b>            }):</b>

Наконец, при четвертом способе вызова функции

<b>$()</b>
передается функция. В этом случае указанная вами функция будет вызвана, когда документ будет полностью загружен и дерево DOM документа будет готово к выполнению операций. Это версия функции
<b>onLoad()</b>
, представленной в примере 13.5, реализованная в библиотеке jQuery. Очень часто можно встретить jQuery-программы, реализованные в виде анонимных функций, объявляемых в вызове функции
<b>jQuery()</b>
:

<b>jQuery(function() { // Будет вызвана по окончании загрузки документа</b>

<b>                           // Здесь находится весь программный код, использующий jQuery</b>

<b>                         }):</b>

Иногда можно увидеть вызов $(f), оформленный в старом и более явном стиле:

<b>$(document).ready(f).</b>

Функция, передаваемая

<b>jQuery()</b>
, будет вызвана со ссылкой
<b>this</b>
, указывающей на объект
<b>document</b>
, и функцией jQuery в качестве единственного аргумента. Это означает, что вы можете удалить глобальное определение функции $ и по-прежнему использовать этот удобный псевдоним локально, как показано ниже:

<b>jQuery.noConflict(); // Восстановить оригинальное значение $</b>

<b>jQuery(function($) { // Использовать $ как локальный псевдоним функции jQuery </b>

<b>                     // Здесь находится весь программный код, использующий jQuery</b>

<b>                   });</b>

Функции, зарегистрированные с помощью

<b>$()</b>
, будут вызваны библиотекой jQuery, когда будет возбуждено событие «DOMContentLoaded» (раздел 13.3.4) или, если это событие не поддерживается, когда будет возбуждено событие «load». То есть когда документ будет загружен и полностью разобран, но внешние ресурсы, такие как изображения, еще могут быть не загружены. Если функцию передать в вызов
<b>$()</b>
после того, как дерево DOM будет готово, она будет вызвана немедленно, перед тем как
<b>$()</b>
вернет управление.

Кроме того, библиотека jQuery использует функцию

<b>jQuery()</b>
как собственное пространство имен и определяет в нем множество вспомогательных функций и свойств. Одной из таких вспомогательных функций является функция
<b>jQuery.noConflict()</b>
, упоминавшаяся выше. В числе других функций общего назначения можно назвать функцию
<b>jQuery.each()</b>
, предназначенную для выполнения итераций,
<b>jQuery.parseJSON()</b>
- для синтаксического анализа данных в формате JSON. Перечень вспомогательных функций общего назначения приводится в разделе 19.7, а другие вспомогательные функции из библиотеки jQuery описываются на протяжении всей главы.

Терминология jQuery

Давайте остановимся, чтобы определить некоторые важные термины, которые будут встречаться на протяжении этой главы: