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

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

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

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

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

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

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

<b>$('flbuttonl').click(function(e) { $('flbutton2').trigger(e); });</b>

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

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

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

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

<b>$('flbuttonl').click(function(e) { if (е.synthetic) (...) }):</b>

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

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

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

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

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

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

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

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

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

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

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

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

<b>bind()</b>
позволяет регистрировать обработчики таких «нестандартных событий», а метод
<b>trigger()</b>
- вызывать эти обработчики.

Такая разновидность косвенного вызова обработчиков нестандартных событий может оказаться весьма полезной при разработке модулей и реализации модели издатель/подписчик или шаблона Observer (наблюдатель). Зачастую при использовании собственных событий может оказаться полезной возможность возбуждать их глобально, с помощью функции

<b>jQuery.event.trigger()</b>
вместо метода
<b>trigger()</b>
:

<b>// Когда пользователь щелкнет на кнопке &quot;logoff&quot;, отправить собственное событие </b>

<b>// всем подписанным на него наблюдателям, которые должны сохранить информацию </b>

<b>// о своем состоянии, и затем перейти на страницу выхода.</b>

<b>$(&quot;#logoff&quot;).click(function() {</b>

<b>  $.event.trigger(&quot;logoff&quot;); // Отправить широковещательное событие</b>