Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   trigger-ы Когда и зачем? (https://javascript.ru/forum/jquery/46210-trigger-y-kogda-i-zachem.html)

spbsprut 02.04.2014 00:36

trigger-ы Когда и зачем?
 
Здравствуйте.

Никогда не пользовался тригерами. Не могли бы вы объяснить зачем их вообще придумали и когда их нужно использовать. Просто я не очень понимаю. К примеру в этой статье первый пример http://jquery-docs.ru/events/trigger/#code
По нажатию на вторую кнопку срабатывает и нажатие на первую.

$("button:first").click(function () {
      update($("span:first"));
    });
    $("button:last").click(function () {
      $("button:first").trigger('click');

      update($("span:last"));
    });


А чем плох вариант?

$("button:first").click(function () {
      update($("span:first"));
    });
    $("button:last").click(function () {
      $("button:first").click();

      update($("span:last"));
    });


Или так же там написано :

Чтобы отправить первую форму на странице без использования функции submit(), сделайте:

$("form:first").trigger("submit");


А чем плох сабмит формы без тригера, почему и когда я должен использовать этот самый тригер?

$("form:first").submit();

Octane 02.04.2014 00:50

trigger выполняет dispatchEvent

Добавим обработчик события
document.body.addEventListner("click", doSomthing);


Если мы хотим, чтобы событие click сработало без участия пользователя, вызовем его сами:

document.body.addEventListner("click", doSomthing);

function trigger(target, eventType)
	var event = document.createEvent("MouseEvents");
	event.initEvent(eventType, true, true);
	target.dispatchEvent(event);
}

trigger(document.body, "click");


подобные действия метод trigger делает в jQuery

конечно можно просто вызвать doSomthing
document.body.addEventListner("click", doSomthing);

doSomthing()

но тогда функция не получит первым аргументом объект события


В общем учите сначала чистый JavaScript, а потом уже фреймворки

Sweet 02.04.2014 00:51

Цитата:

Сообщение от spbsprut
А чем плох сабмит формы без тригера, почему и когда я должен использовать этот самый тригер?

Это одно и то же. Событие можно навесить так:
$someCollection.on("submit", handler);
И так:
$someCollection.submit(handler);
И "дернуть" можно через .submit или .trigger - это одно и то же.

spbsprut 02.04.2014 01:33

Вот эта статья вроде внесла какую то ясность в мою голову
http://novice2ninja.ru/ninja-book/chapter-9/events.html

Вообщем основные директивы для создания и вызова событий являются bind/trigger соответственно. А все click mouseleave и тд обертки над ними. А сами тригеры можно использовать при создании собственных событий.(по крайне мере).


Часовой пояс GMT +3, время: 07:34.