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

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

Шрифт:

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

toggle.
Этот метод регистрирует функцию обработчика события «click». Вы можете указать две или более функции обработчиков, и библиотека jQuery будет вызывать их всякий раз, когда будет возникать событие «click». Если, например, вызвать этот метод как
toggle(f,g,h),
функция
f
будет вызываться для обработки первого события «click»,
g
– второго,
h
– третьего и снова
f
– для обработки четвертого события «click». Будьте внимательны при использовании метода
toggle:
как будет показано в разделе 19.5.1, этот метод может также использоваться для отображения и скрытия (т. е. для переключения видимости) выбранных элементов.

В разделе 19.4.4 мы познакомимся с другими, более обобщенными способами регистрации обработчиков событий и завершим этот раздел описанием еще одного простого и удобного способа регистрации обработчиков.

Напомню, что создавать новые элементы можно с помощью функции

$
, передавая ей строку с разметкой HTML и объект (во втором аргументе) с атрибутами, которые должны быть установлены во вновь созданном элементе. Второй аргумент может быть любым объектом, который допускается передавать методу
attг.
Но кроме того, если имя какого-либо из свойств совпадает с именем метода регистрации обработчиков событий, перечисленных выше, значение этого свойства будет интерпретироваться как функция-обработчик и зарегистрировано как обработчик данного типа события. Например:

$("<img/>", {

src: image_url,

alt: image_description,

className: "translucent_image",

click: function { $(this).css("opacity", "50%"): }

});

19.4.2. Обработчики событий в библиотеке jQuery

Функции обработчиков событий в примерах выше не имеют ни аргументов, ни возвращаемых значений. В целом это нормально для подобных обработчиков событий, но библиотека jQuery передает каждому обработчику событий один или более аргументов и анализирует значения, возвращаемые ими. Самое главное, что следует знать, - каждому обработчику событий библиотека jQuery передает в первом аргументе объект события. Поля этого объекта содержат дополнительную информацию о событии (такую как координаты указателя мыши). Свойства стандартного объекта

Event
были описаны в главе 17. Библиотека jQuery имитирует стандартный объект
Event
даже в броузерах (таких как IE версии 8 и ниже), не поддерживающих его, и объекты событий в библиотеке jQuery имеют одинаковые наборы полей во всех броузерах. Подробнее об этом рассказывается в разделе 19.4.3.

Обычно обработчикам событий передается единственный аргумент с объектом события. Но если событие генерируется явно с помощью метода

trigger
(раздел 19.4.6), обработчикам можно передавать массив дополнительных аргументов. В этом случае дополнительные аргументы передаются обработчикам после первого аргумента с объектом события.

Независимо от способа регистрации значение, возвращаемое функцией обработчика событий, всегда имеет большое значение для библиотеки jQuery. Если обработчик вернет false, будут отменены и действия, предусмотренные по умолчанию для этого типа события, и дальнейшее распространение события. То есть возврат значения false равносилен вызову методов

preventDefault
и
stopPropagation
объекта
Event
. Кроме того, когда обработчик события возвращает значение (отличное от undefined), библиотека jQuery сохраняет это значение в свойстве
result
объекта
Event
, к которому можно обратиться в обработчиках событий, вызываемых вслед за этим обработчиком.

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
.

  • Читать дальше
  • 1
  • ...
  • 353
  • 354
  • 355
  • 356
  • 357
  • 358
  • 359
  • 360
  • 361
  • 362
  • 363
  • ...

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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