.trigger() – принудительный вызов события

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

Метод имеет два варианта использования.

.trigger( eventType [, extraParameters ] )
  • eventType — тип вызываемого события JavaScript, например click или submit;
  • extraParameters – массив дополнительных данных, передаваемых в обработчик.
.trigger( event [, extraParameters ] )
  • event – объект jQuery.Even;
  • extraParameters – массив дополнительных данных, передаваемых в обработчик.

Любые обработчики событий прикреплённые методом .on() или одним из его сокращений, запускаются, когда происходит соответствующее событие. Однако их можно запускать вручную используя метод .trigger(). Вызов метода .trigger() выполняет обработчики в том порядке, в котором они были бы выполнены, если бы их вызывал пользователь:

$( "#foo" ).on( "click", function() {
  alert( $( this ).text() );
});
$( "#foo" ).trigger( "click" );

Начиная с jQuery 1.3 все инициированные события немедленно всплывают по структуре DOM документа. К примеру, если вы инициируете событие для параграфа этот элемент будет инициирован первым, затем его родительский элемент, и его родительский элемент, и так далее по документу. Событие объект будет иметь .target свойство подобное оригинальному инициированному элементу.

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

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

Когда мы создаем собственное событие и его инициализируем методом .on(), второй аргумент может быть очень полезен. К примеру, представьте, что мы привязали обработчик к пользовательскому событию custom, а не к встроенному событию .click(), как мы это делали выше:

$( "#foo" ).on( "custom", function( event, param1, param2 ) {
  alert( param1 + "\n" + param2 );
});
$( "#foo").trigger( "custom", [ "Custom", "Event" ] );

Объект события всегда передается в качестве первого параметра. Также вызову .trigger () может быть передан массив аргументов. Начиная с jQuery 1.6.2, можно передать просто строку или числовой аргумент, без обертывания в массив.

Отметим разницу между дополнительными данными, передаваемыми при установке обработчика событий (параметр eventData) и данными передаваемыми при вызове события методом trigger() (параметр extraParameters). Во-первых, есть смысловое отличие – eventData задается один раз для каждого обработчика, поэтому, при каждом вызове, он будет получать одно и то же значение. Параметр extraParameters задается для каждого отдельного вызова заново, и поэтому значения могут быть разными. Во-вторых, эти два вида данных доступны внутри обработчика различным способом.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *