jQuery программно запускает события - PullRequest
4 голосов
/ 01 августа 2011

Какие все события могут быть запущены программно с помощью jQuery? Также есть какие-то важные отличия, о которых следует помнить, когда кто-то запускает событие, используя jQuery, против естественного способа его запуска?

Ответы [ 4 ]

2 голосов
/ 01 августа 2011

Каждое событие может быть запущено программно, просто используйте его версию без обратного вызова.

Пример:

$('#button').click(function() { alert('event hanlder'); });

$('#button').click(); // generate the event

По поводу вашего второго вопроса, между обработчиками событий native и jQuery не должно быть никаких различий.


Одна вещь, которая хороша тем, что jQuery связывает this с элементом, который получил событие, внутри обратного вызова (этого не происходит в обработчиках нативных событий):

$('#button').click(function() { alert(this); }); // here 'this' == document.getElementById('button');

Предупреждение: элемент, на который ссылается this, не является "дополненным jQuery". Если вы хотите пройти или изменить его с помощью jQuery, вам нужно будет сделать что-то вроде var $this = $(this);

1 голос
/ 01 августа 2011

Вы должны знать разницу между trigger и triggerHandler в jQuery.

триггер

trigger пытается воспроизвести естественное событие как можно лучше. Обработчик события для инициируемого события get выполняется, но действия браузера по умолчанию не всегда точно реплицируются. Например, $('a#link).trigger('click'); выполнит функцию javascript, связанную с обработчиком событий links click, но не перенаправит браузер на href привязки, как при обычном щелчке. Пример: http://jsfiddle.net/AxFkD/

Все короткие формы вызова trigger ведут себя точно так же, как trigger IE. click(), mouseup(), keydown() и т. Д.

triggerHandler

triggerHandler предотвращает образование пузырей (например, http://jsfiddle.net/LmqsS/), он избегает поведения браузера по умолчанию и просто выполняет обратный вызов событий и возвращает возвращаемое значение обработчика событий вместо объекта jQUery для сцепления.

Вы также должны знать, что trigger влияет на все элементы, соответствующие селектору, но triggerHandler влияет только на первый пример. EX: http://jsfiddle.net/jvnyS/

0 голосов
/ 01 августа 2011

Во-первых, по понятным причинам вы не можете вызвать событие ready .

Тем не менее, события, вызванные trigger () , ведут себя так же, как если бы они были инициированы пользователем. В частности, обработчики событий вызываются в том же порядке.

Единственное различие, которое я знаю, состоит в том, что инициируемые события не пузырили дерево DOM в более старых версиях jQuery (это поведение было исправлено в версии 1.3).

0 голосов
/ 01 августа 2011

Вы можете вызвать любое событие программно. Но большинство событий не может быть смоделировано как естественное событие с использованием программных триггеров.

// для запуска события нажатия на кнопку

$("buttonSelector").trigger("click");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...