document.ready
используется для выполнения кода после полной загрузки DOM. Это можно использовать для прикрепления обработчиков событий к элементам на странице, например.
$(function(){
$('#somediv').click(function(){
});
})
<div id="somediv"> </div>
Внутри jQuery подключается к DOMContentLoaded
и window.onload
в качестве резервной копии. В случае IE делается попытка прокрутить область просмотра снова и снова до тех пор, пока не будет успешно.
У меня есть несколько вопросов, первый мой, когда привязывайте обработчики событий к самому document
, нужно ли поместить этот код в document.ready
? Я всегда писал код ниже, не обернув его в document.ready
$(document).keydown(function(e){
if (e.which == 39) {
alert( "right arrow pressed" );
return false;
}
});
И как вы можете видеть, это работает. Я понимаю, так как этот код не подключается к каким-либо элементам документа, но сам документ, нет необходимости обертывать его в обработчик document.ready
. Другая причина, по которой я не обертываю это, - это то, что я использовал то же самое в vanilla javascript, эквивалентом которого был бы код ниже, который также работает.
document.onkeydown= function(){
var keyCode = event.keyCode || event.which;
if (keyCode == 39) {
alert( "right arrow pressed" );
return false;
}
}
Я видел многочисленные сообщения, где люди обертывают его в document.ready
, есть ли недостаток в том, чтобы не обернуть этот код в document.ready
?
Также я думаю, что этот вопрос связан с моей недостаточной ясностью того, что происходит в это время, когда DOM строится, поэтому, если кто-то может объяснить, что происходит в течение периода непосредственно перед тем, как DOM готов. Для меня документ готов, когда html был проанализирован и преобразован в дерево DOM, или ему еще больше?
Вкратце, вот мои вопросы
- При привязке обработчиков событий к
document
, это необходимо поместить этот код вdocument.ready
. - Есть ли недостатки, чтобы не обертывать код в
document.ready
? - Какая последовательность событий имеет место, когда документ создается, перед запуском
document.ready
?