azi*_*ani 32 javascript jquery
在document.ready
使用DOM完全加载后执行代码.这可以用于将事件处理程序附加到页面上的元素,例如
$(function(){
$('#somediv').click(function(){
});
})
<div id="somediv"> </div>
Run Code Online (Sandbox Code Playgroud)
在内部,jQuery挂钩DOMContentLoaded
并window.onload
作为后备.在IE的情况下,尝试一遍又一遍地滚动视口直到成功.
我有几个问题,我的第一个问题是,当将事件处理程序绑定到document
自身时,是否有必要将该代码放入document.ready
?我一直在编写下面的代码,而不是将它包装在一个document.ready
$(document).keydown(function(e){
if (e.which == 39) {
alert( "right arrow pressed" );
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,它有效.我的理解是,由于此代码不会连接到文档中的任何元素,而是文档本身,因此无需将其包装在document.ready
处理程序中.我不包装它的另一个原因是因为我曾经在vanilla javascript中做同样的事情,相当于下面的代码,这也有效.
document.onkeydown = function(){
var keyCode = event.keyCode || event.which;
if (keyCode == 39) {
alert( "right arrow pressed" );
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
我已经看过很多人将它包装成一个帖子document.ready
,有没有不包装这些代码的缺点document.ready
?
此外,我认为这个问题源于我在构建DOM时发生的事情缺乏清晰度,所以如果有人能够解释在DOM准备好之前的那段时间发生的事情.对于我来说,当html被解析并转换为DOM树时,文档已准备就绪,还是有更多内容?
总之,这是我的问题
document
自身时,是否有必要将该代码放入document.ready
.document.ready
什么?document.ready
被解雇之前会发生什么样的事件? use*_*654 33
如果您绑定到文档本身,则无需等待它准备就绪.在这种情况下,不应该将它包装在document.ready中.
当浏览器触发DOMReady事件时,或者对不支持DOMReady事件的浏览器版本的特定测试成功时,document.ready会被触发.
附加信息. (12年5月22日)
大多数现代浏览器都实现了DOMContentLoaded事件,该事件在文档中定义的所有元素都可以通过javascript操作时触发.其他浏览器依赖于setTimeout循环,该循环不断检查文档的readystate或直接绑定到文档的onreadystatechanged方法(取自jquery core).在执行javascript之前,文档本身已准备好进行操作,因此在直接绑定到文档时永远不需要等待.
这里唯一的问题是,如果代码与文档以外的元素交互,则有可能在文档存在之前在文档上触发事件.这不太可能发生,但它可能发生.如果您的代码可能会发生这种情况,那么将其置于其中$(document).ready()
以防止该情况是有意义的.您的样品不保证被放入其中$(document).ready()
.
SLa*_*aks 11
重点$(document).ready
是在解析整个文档后执行代码.
如果要使用尚不存在的元素,则只需使用它.
(例如,如果您的脚本在<head>
)
如果您使用的元素已经存在(或者因为它们是全局的,或者因为<script>
它们位于它们之下),您不需要它.
归档时间: |
|
查看次数: |
2169 次 |
最近记录: |