Описание:
Выполняет все обработчики и привязанные поведения для соответствующих элементов для данного типа события. .trigger( типСобытия, дополнительныеПараметры )
Строка, содержащая тип события JavaScript, такой как нажатие или отправка.
Массив дополнительных параметров, для отправки в обработчик события. Любые обработчики событий привязанные с .bind()
или с помощью одного из его сокращенных методов срабатывают, когда происходит соответствующее событие.
Они могут быть запущены вручную, с помощью метода .trigger() .
Вызов .trigger() запускает обработчиков в том же порядке в котором они были бы запущенны пользователем естественным путем:
$('#foo').bind('click', function() {
alert($(this).text());
});
$('#foo').trigger('click');
В то время как .trigger()
имитирует событие активации, в комплекте с синтезированным объектом события, это не вполне повторяет естественную среду события.
Чтобы вызвать обработчиков, связанных с помощью jQuery без одновременного запуска родного события, используйте вместо этого .triggerHandler() .
Когда мы определяем пользовательский тип события с помощью метода .bind() ,
второй аргумент в методе .trigger() становится полезным.
Например, предположим, что мы связали обработчик для события custom
на наш элемент вместо встроенного события click так как мы сделали выше:
$('#foo').bind('custom', function(event, param1, param2) {
alert(param1 + "n" + param2);
});
$('#foo').trigger('custom', ['Custom', 'Event']);
Объект события всегда передается в качестве первого параметра в
обработчик событий, но, если имеются дополнительные параметры
определенные во время вызова .trigger() , то пока они здесь, эти параметры будут переданы вместе с обработчиком.
Обратите внимание на разницу между дополнительными параметрами передающимися сюда и параметром eventData в методе .bind().
Они оба механизмы для передачи информации в обработчик событий, но аргумент
extraParameters в .trigger() предоставляет информацию, которая будет определена на момент вызова события, в то время как аргумент
eventData
в методе .bind() требует информации, которая будет рассчитывается на момент привязки обработчика.
Примеры
Пример 1
Нажатие на кнопку #2 также вызывает нажатие и на кнопку #1.
$("button:first").click(function () {
update($("span:first"));
});
$("button:last").click(function () {
$("button:first").trigger('click');
update($("span:last"));
});
function update(j) {
var n = parseInt(j.text(), 10);
j.text(n + 1);
}
Пример 2
Чтобы отправить первую форму на странице без использования функции submit(), сделайте:
$("form:first").trigger("submit")
Пример 3
Чтобы отправить первую форму на странице без использования функции submit(), сделайте:
var event = jQuery.Event("submit");
$("form:first").trigger(event);
if ( event.isDefaultPrevented() ) {
// Perform an action...
}
Пример 4
Передача произвольных данных событию:
$("p").click( function (event, a, b) {
//when a normal click fires, a and b are undefined
//for a trigger like below a refers to "foo" and b refers to "bar"
} ).trigger("click", ["foo", "bar"]);
Пример 5
Передача произвольных данных через объект события:
var event = jQuery.Event("logged");
event.user = "foo";
event.pass = "bar";
$("body").trigger(event);
Пример 6
Альтернативный способ передачи данных объекту события:
$("body").trigger({
type:"logged",
user:"foo",
pass:"bar"
});
|