用于在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
在构造文档时,在触发 之前,会发生什么事件序列?