$(document).ready(function(){…}) 是jQuery的方法。window.onload 是js的原生方法。
二者功能相似:
在这两个方法里的jQuery或JS代码会在DOM元素加载完毕后才开始执行,避免在文档没有完全加载之前运行导致的一些错误,如访问一个还没有加载出来的元素。
并且,在这两个方法里的代码可以获得当前网页上的所有元素,并进行监听。
比较:
-
执行时机:$(document).ready() 函数内的语句执行时机是DOM元素加载完毕时,即网页结构加载完毕,但关联的文件未下载完,图片位加载出来时。而window.onload是网页的所有元素都加载完毕后才执行,包括图片、关联文件等。
-
可简写:
$(document).ready(function(){
//执行代码
});
$(function(){
//执行代码
});window.οnlοad=function(){
//执行代码
}
$(window).load(function(){
//执行代码
}); -
当有多个入口函数时:$(document).ready()函数内的多个入口函数按顺序执行,从上到下。而window.onload则是后面编写的会覆盖前面编写的。
如下面的代码,分别用jQuery和JS写了两个两个入口函数,每个入口函数里都有一个alert弹窗。
执行结果:用jQuery写的两个弹窗依次执行,先“111”后“222”,用JS写的两个弹窗则只执行了第二个“222”。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="../jquery-1.8.3.min.js"></script>
<script>
$(document).ready(function(){
alert("111");
});
$(document).ready(function(){
alert("222");
});
</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
window.onload=function(){
alert("111");
}
window.onload=function(){
alert("222");
}
</script>
</head>
</body>
</html>
(不知道为什么一直提示我标题里的onload是非法字符,只好中间加了个空格o(╥﹏╥)o)