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

19.4.3. Объект Event в библиотеке jQuery

19.4.3. Объект Event в библиотеке jQuery

Библиотека jQuery скрывает различия в реализациях броузеров, определяя собственный объект Event. Когда библиотека jQuery вызывает обработчик события, она всегда передает ему в первом аргументе собственный объект Event. Объект Event в библиотеке jQuery основан на положениях стандартов консорциума W3C, но в нем также реализованы некоторые особенности, ставшие стандартными де-факто. jQuery копирует все следующие поля стандартного объекта Event во все свои объекты Event (хотя некоторые из них могут иметь значение undefined для определенных типов событий):


В дополнение к этим свойствам объект Event определяет также следующие методы:

preventDefault()           isDefaultPrevented()
stopPropagation()          isPropagationStopped()
stopImmediatePropagation() isImmediatePropagationStopped()

Большинство из этих свойств и методов было представлено в главе 17 и описывается в четвертой части книги, в справочной статье Event. О некоторых из этих полей, обрабатываемых библиотекой jQuery особым образом, чтобы обеспечить им одинаковое поведение во всех броузерах, стоит упомянуть отдельно:

metaKey

Если стандартный объект события не имеет свойства metaKey, jQuery присваивает ему значение свойства ctrlKey. Значение свойства metaKey определяется в MacOS клавишей Command.3

pageX, pageY

Если стандартный объект события не имеет этих свойств, но имеет свойства, определяющие координаты указателя мыши в видимой области в виде свойств clientX и clientY, jQuery вычислит координаты указателя мыши относительно начала документа и сохранит их в свойствах pageX и pageY.

target, currentTarget, relatedTarget

Свойство target ссылается на элемент документа, в котором возникло событие. Если это свойство в стандартном объекте события ссылается на текстовый узел, jQuery подставит ссылку на вмещающий объект Element. Свойство currentTarget ссылается на элемент, в котором был зарегистрирован текущий обработчик события. Значение этого свойства всегда должно совпадать со значением this.

Если значения свойств currentTarget и target не совпадают, следовательно, обрабатывается всплывшее событие и может оказаться полезным проверить элемент target с помощью метода is() (раздел 19.1.2):

if ($(event.target).is("a")) return; // Игнорировать события.
                                     // сгенерированные в ссылках

Свойство relatedTarget - ссылка на другой элемент, вовлеченный в события перехода, такие как «mouseover» и «mouseout». Например, для событий «mouseover» свойство relatedTarget будет ссылаться на элемент, который покинул указатель мыши при перемещении на элемент target. Если стандартный объект события не имеет свойства relatedTarget, но имеет свойства toElement и fromElement, свойство relatedTarget получает значение одного из этих свойств в зависимости от типа события.

timeStamp

Время возникновения события в миллисекундах, возвращаемое методом Date.getTime(). Библиотека jQuery сама устанавливает это свойство, чтобы обойти давнишнюю ошибку в Firefox.

which

Библиотека jQuery нормализует это нестандартное свойство события так, что оно определяет кнопку мыши или клавишу на клавиатуре, нажатие которой вызвало это событие. Для событий клавиатуры, если стандартный объект события не имеет свойства which, но имеет свойство charCode или keyCode, в свойство which будет записано значение свойства, которое определено. Для событий мыши, если свойство which отсутствует, но имеется свойство button, в свойство which будет записано значение, основанное на значении свойства button. О означает, что никакая кнопка не была нажата. 1 - была нажата левая кнопка, 2 -средняя кнопка и 3 - правая кнопка. (Обратите внимание, что в некоторых броузерах нажатие правой кнопки мыши не генерирует события.)

Кроме того, библиотека jQuery определяет следующие собственные поля в объекте Event, которые иногда могут оказаться полезными:

data

Если при регистрации обработчика события были указаны дополнительные данные (раздел 19.4.4), обработчик сможет получить к ним доступ с помощью этого поля.

handler

Ссылка на текущую функцию обработчика события.

result

Возвращаемое значение предыдущего обработчика этого события. Обработчики, не возвращающие ничего, не учитываются.

originalEvent

Ссылка на стандартный объект Event, созданный броузером.

Оглавление книги


Генерация: 1.850. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз