最近使用$(document).ready(function(){})遇到一个问题:加载页面后发送数据请求后台,得到的数据不对,后发现请求后台时,发送的数据为空,没有获取到值导致的。------改成window.onload = function(){}或者$(window).load(function(){})就可以了。现总结一下这一块的知识点。
如何选择$(document).ready()和window.onload请结合实际情况进行判断。
$(document).ready()和window.onload之间的区别:
1.执行时间
window.onload = function(){} -------- 页面上所有的元素(包括图片,文件)加载完成之后执行,jquery的写法是$(window).load(function(){})
$(document).ready(function(){}) ------- 页面上DOM结构绘制完成之后执行,可以简写成$(function(){})。
页面会先执行$(document).ready(),然后执行window.onload。
2.执行次数
window.onload = function(){} ------ 只执行一次,如果定义多个时,只会执行最后一个定义的方法;如果想执行多个方法,可以使用$(window).load(function(){}) (会按照定义顺序执行)
$(document).ready(function(){}) ---- 可以执行多次,页面编写多个$(document).ready()方法时,按照定义顺序依次执行
<script> window.onload = function(){alert("onload11"); } window.onload = function(){alert("onload22"); } $(window).load(function() {alert("load11"); }); $(window).load(function() {alert("load22"); }); $(document).ready(function() {alert("ready22"); }); $(document).ready(function() {alert("ready11"); }); </script>
弹出的顺序为 ready22 -----> ready11 -----> onload22 -----> load11 -----> load22