.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 задается для каждого отдельного вызова заново, и поэтому значения могут быть разными. Во-вторых, эти два вида данных доступны внутри обработчика различным способом.