русский  עברית
tadam logo
Нашли ошибку в тексте?
Отметьте её курсором и нажмите
Ctrl + Enter
Проверка орфографии Xhtml.co.il
Orphus system
Рассылка
Присоединитесь к списку рассылки для получения последних новостей

Введите адрес электронной почты:

.trigger( типСобытия, дополнительныеПараметры )

Возвращает: jQuery

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

.trigger( типСобытия, дополнительныеПараметры )

Добавлена в версию: 1.0
типСобытия
Строка, содержащая тип события 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);
    }

Результат выполнения кода выше:
Полный код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
                    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript" language="javascript">

  $(document).ready(function(){
    
    $("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);
    }

  });
  </script>
  <style>

  button { margin:10px; }
  div { color:blue; font-weight:bold; }
  span { color:red; }
  </style>
</head>
<body>
  <button>Button #1</button>
  <button>Button #2</button>

  <div><span>0</span> button #1 clicks.</div>
  <div><span>0</span> button #2 clicks.</div>

</body>
</html>

Пример 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"
});
Была ли эта информация полезной?
   

Комментарии