Вызов события

Материал из JQuery

Перейти к: навигация, поиск
.trigger()

Вызывает событие у выбранных элементов, что приводит к запуску обработчиков этого события. Метод имеет два варианта использования:

.trigger(eventType, [extraParameters]):jQuery1.0

eventType — тип вызываемого события. Например "click", "resize" и.т.д. (список всех событий см. ниже).
extraParameters — массив дополнительных данных, передаваемых в обработчик.

.trigger(eventObject):jQuery1.3

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

eventObjectобъект обрабатываемого события, который был передан в обработчик.

Простой пример:

// установим обработчик нажатия кнопки мыши на элементе foo
$('#foo').bind('click', function(){
  alert('Шла Саша по шоссе')
});
 
// вызовем событие нажатия на элемент, что приведет к выполнению обработчика
$('#foo').trigger('click');


Надо отметить, что вызов события методом trigger() не полностью повторяет событие, произошедшее по естественным причинам. Например вызов события "click" применительно к ссылке, не приведет к переходу по ней.

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

О типах событий можно посмотреть в описании метода bind().

Передача дополнительных данных

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

Рассмотрим пример передачи дополнительных данных:

// зададим обработчик с двумы дополнительными параметрами
$('#foo').bind('custom', function(event, param1, param2){
  alert(param1 + "\n" + param2);
});
 
// вызовем событие методом trigger, в результате будет запущен наш обработчик
$('#foo').trigger('custom', ['Custom', 'Event']); // вторым параметром передан массив с двумя строками


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

// зададим обработчик
$('#foo').bind('custom', {otherParam:'uha-ha!'}, function(event, param1, param2){
  alert(param1 + "\n" + param2); // так осуществляется доступ к данным extraParameters
  alert(event.data.otherParam);  // а так к данным eventData
});
 
// вызовим событие методом trigger, в результате будет запущен наш обработчик
$('#foo').trigger('custom', ['Custom', 'Event']);

Ссылки

Поисковые ключи:
  • вызвать событие
  • вызов события
  • симуляция события
  • .trigger()
  • trigger()