2012-10-18 2 views
1

Say у меня есть:Javascript Действие заказ

<div id="name" class="button"></div>

и в файле Javacript определяет нажмите действия как для кнопки класса и имени идентификатора, что-то вроде:

$("#name").click(function(event){ 
    alert("hi"); 
}) 

$(".button").click(function(event){ 
    alert("bye"); 
}) 

Когда я нажимаю, что div, я получу предупреждение «привет» перед предупреждением «bye», потому что «привет» появляется выше «до свидания»? Или что-то еще определяет, что происходит первым? Что делать, если 2 функции были в разных файлах? В этом случае вопрос, какой файл javascript был включен первым (появился ближе к вершине html-файла)? Я предполагаю, что jQuery не имеет ничего общего с этим, не так ли?

+1

почему бы вам не попробовать это в вашем веб-браузере? – StaticVariable

+0

@jhonraymos - Я не был уверен, был ли определенный приоритет для выполнения javascript. Я не хотел тестировать на ограниченном подмножестве браузеров/сред только, чтобы узнать, что я забыл основную, которая действовала по-другому. –

ответ

3

Вы абсолютно правы, что это честно основано на том, что связано первым. В вашем случае сначала связан объект "#name", затем ".button", поэтому они, наконец, выполнены в том же порядке. Это не основано на том, что видно на первой странице, но в первую очередь связано. Связывание может происходить в функции, поэтому это произойдет не до тех пор, пока функция не будет вызвана (очевидно), но функция может быть объявлена ​​перед другими связями - ничего не значит, ее нужно вызвать. То же самое касается наличия в разных файлах. Когда файлы разбираются, они выполняются. Итак, то, что я сказал ранее, относится и к этому - пока привязка выполняется в том порядке, в котором все разбирается (от верхней части страницы HTML до нижней), они будут происходить в этом порядке. Я уверен, причина в том, что это происходит потому, что jQuery хранит эти привязки в стеке, который является FIFO - сначала первым, первым.

+0

html всегда анализируется сверху вниз? –

+0

Если мне что-то не хватает, я так считаю. Я имею в виду, поэтому некоторые люди не пытаются использовать что-то вроде '$ (document) jQuery .ready' и вместо этого просто записывают свой код в нижней части элемента' '. Таким образом, они знают, что все HTML проанализированы и готовы к манипуляциям. Кроме того, это еще одна причина, по которой вы должны включить библиотеку jQuery перед любой другой библиотекой/кодом, которая ее использует (или для этого, любая библиотека/код). Но то же самое касается Javascript - понятно, что код выполняется при анализе страницы, поэтому он должен быть сверху вниз (как обычная логика программирования). – Ian

0

Сначала вы видите предупреждение 'hi', потому что это событие было связано в первую очередь.

Так что, когда события увольняют на основании того, что они связаны с ..

Смежные вопросы