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

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

Шрифт:

$("#my_form").trigger("submit");

В отличие от методов

bind
и
unbind,
в вызове метода
trigger
нельзя указать более одного типа события в первом аргументе. Однако, подобно методам
bind
и
unbind,
он позволяет указывать пространства имен возбуждаемых событий» чтобы запустить только обработчики, зарегистрированные для этого пространства имен. Если потребуется запустить только обработчики событий, не привязанные ни к какому пространству имен, следует добавить в строку с типом события восклицательный знак. Обработчики, зарегистрированные посредством свойств, таких как
onclick
, считаются обработчиками, не привязанными к какому-либо пространству имен:

$("button").trigger("click.ns1"); // Запустит обработчики в пространстве имен

$("button").trigger("click!"); // Запустит обработчики, не привязанные

// к какому-либо пространству имен

Вместо строки с типом события в первом аргументе методу

trigger
можно передать объект
Event
(или любой другой объект, имеющий свойство
type
). Свойство
type
будет определять, какие обработчики должны запускаться. Если передать объект
Event
библиотеки jQuery, этот объект будет передан обработчикам. Если передать простой объект, автоматически будет создан новый объект
Event
библиотеки jQuery и в него будут добавлены свойства объекта, переданного методу. Это самый простой способ передать обработчикам событий дополнительные данные:

// Обработчик onclick элемента buttonl генерирует то же событие для button2

$('flbuttonl').click(function(e) { $('flbutton2').trigger(e); });

// Добавит дополнительные свойства в объект события при возбуждении события

$('flbuttonl').trigger({type: 'click', synthetic:true});

// Этот обработчик проверяет дополнительные свойства, чтобы отличить

// настоящее событие от искусственного

$('flbuttonl').click(function(e) { if (е.synthetic) (...) }):

Передать дополнительные данные обработчикам при возбуждении событий вручную можно также с помощью второго аргумента метода

trigger
. Значение, переданное методу
trigger
во втором аргументе, будет передаваться во втором аргументе всем запущенным обработчикам событий. Если во втором аргументе передать массив, каждый его элемент будет передан обработчикам в виде отдельного аргумента:

$('flbuttonl').trigger("click", true); // Передать единственный дополнительный аргумент

$('flbuttonl').trigger("click", [х,у,z]); // Передать три дополнительных аргумента

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

$('*')
и вызвать метод
trigger
относительно результата, но это решение весьма неэффективно. Вместо того чтобы возбуждать событие в глобальном масштабе, можно вызвать вспомогательную функцию
jQuery.event.trigger.
Эта функция принимает те же аргументы, что и метод
trigger,
и эффективно запускает обработчики событий указанного типа, имеющиеся во всем документе. Обратите внимание, что «глобальные события», возбуждаемые таким способом, не всплывают, и при этом запускаются только обработчики событий, зарегистрированные с использованием методов объекта
jQuery
(обработчики, зарегистрированные с помощью свойств модели DOM, не запускаются).

После вызова обработчиков событий метод

trigger
(и вспомогательные методы, вызывающие его) выполняет действия, предусмотренные по умолчанию для сгенерированного типа события (предполагается, что ни один обработчик не вернул значение false или не вызвал метод
preventDefault
объекта события). Например, если возбудить событие «submit» в элементе <form>, метод
trigger
вызовет метод
submit
этой формы, а если возбудить в элементе событие «focus», метод
trigger
вызовет метод
focus
этого элемента.

Если необходимо вызвать обработчики событий без выполнения действий по умолчанию, вместо метода

trigger
следует использовать метод
triggerHandler.
Этот метод действует точно так же, как и метод
trigger,
за исключением того, что он сначала вызывает методы
preventDefault
и
cancelBubble
объекта
Event
. Это означает, что искусственное событие не будет всплывать, и для него не будут выполняться действия, предусмотренные по умолчанию.

19.4.7. Реализация собственных событий

Система управления событиями в библиотеке jQuery создана на основе стандартных событий, таких как щелчки мышью или нажатия клавиш, генерируемых веб-броузерами. Но она не ограничивается только этими событиями и позволяет использовать любую строку в качестве имени типа события. Метод

bind
позволяет регистрировать обработчики таких «нестандартных событий», а метод
trigger
– вызывать эти обработчики.

  • Читать дальше
  • 1
  • ...
  • 357
  • 358
  • 359
  • 360
  • 361
  • 362
  • 363
  • 364
  • 365
  • 366
  • 367
  • ...

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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