Какие jQuery-прикрепленные события в моем элементе запускаются первыми? - PullRequest
2 голосов
/ 09 августа 2011

Предположим, у меня есть кнопка на моей веб-странице:

<input type='button' id='myButton' value='Click me!' />

Предположим, я пишу следующий jQuery:

$(document).ready(function() {
    var button = $('#myButton');
    button.click(doThis);
    button.click(doThat);
}

function doThis() {
    // do something
}

function doThat() {
    //do something else
}

Когда кнопка нажата, как я могу узнать, какая функция должна выполняться первой? Или это зависит от не зависящих от меня вещей?

Ответы [ 3 ]

9 голосов
/ 09 августа 2011

Обработчики выполняются в порядке, в котором они были прикреплены к элементу (см. Документацию ):

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

Итак, в вашем случае сначала будет выполняться doThis, а затем doThat.

Примечание: Это относится только к jQuery. Информацию о чистых обработчиках событий DOM смотрите в ответе @ StuperUser .

Для получения общей информации об обработке событий в JavaScript я могу порекомендовать статьи на quirksmode.org .

3 голосов
/ 09 августа 2011

События jQuery будут запускаться в порядке прикрепления, как сказали @Felix Kling и @Kyle.

Это не относится к jQuery. Согласно jQuery в действии, второе издание - в модели событий DOM уровня 2 (например, с использованием addEventListener вместо $.bind или методов, которые его вызывают)

Обратите внимание, что хотя обработчики запускаются в порядке, в котором они были установлены, этот порядок не гарантируется стандартом! Тестеры этого кода никогда не соблюдали порядок, отличный от порядка установления, но он было бы глупо писать код, который опирается на этот порядок. Всегда помните, что несколько обработчиков, установленных на элементе, могут запускаться в случайном порядке.

Еще одна причина использовать jQuery.

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

Они будут выполняться в том порядке, в котором вы их связываете (doThis, затем doThat).

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