原文

  简书原文:https://www.jianshu.com/p/bbf28d61aa1f

大纲

  1、对页面加载的认识
  2、关于document.ready()
  3、关于document.onload()
  4、document.ready和window.onload的区别
  5、为什么要使用document.ready()或者document.onload()
  6、document.ready()的使用场景

1、对页面加载的认识

  一般情况下,一个页面的相应加载顺序是:域名解析——>加载html——>加载js和css——>加载图片等其他信息。

2、关于document.ready()

  执行时机:在DOM完全就绪时就可以被调用。
  多次使用:在同一个文件中多次使用,一次调用。
  理解:document.ready()的意思是在DOM加载完成之后执行ready()方法中的代码,换句话说,这个方法的本意是为了让代码的执行时间是在DOM加载完成之后才开始执行。

/*
多次使用:运行结果为:先是one,然后是two
*/
function one(){
alert("one");
}
function two(){
alert("two");
}
$(document).ready(function(){
one();
});
$(document).ready(function(){
two();
}); /*
写法
*/
//jq的写法
$(document).ready(function(){
//do something
});
//简写,默认document
$().ready(function(){
//do somethin
});
//简写
$(function(){
//do something
});

3、关于document.onload()

  执行时机:在网页中所有元素(包括元素的所有关联文件)完全加载到浏览器后才执行,即JavaScript此时可以访问网页中的所有元素。
  多次执行:JavaScript的onload事件一次只能保存对一个函数的引用,他会自动调用最后面的函数覆盖前面的函数。

/*
多次使用:运行结果为:只执行了two
*/
function one(){
alert("one");
}
function two(){
alert("two");
} window.onload = one;
window.onload = two; /*
写法
*/
window.onload = function(){
//do something
}
//等价于
$(window).load(function(){
//do something
})

4、document.ready和window.onload的区别

  document.ready和window.onload的区别——JavaScript文档加载完成事件。
  页面加载完成有两种事件:
    一是ready,表示文档结构已经加载完成(不包含图片等非文字媒体文件)。
    二是onload,指示页面包含图片等文件在内的所有元素都加载完成。

5、为什么要使用document.ready()或者document.onload()

  $(document).ready() 里的代码是在页面内容都加载完才执行的,如果把代码直接写到script标签里,当页面加载完这个script标签就会执行里边的代码了,此时如果你标签里执行的代码调用了当前还没加载过来的代码或者dom,那么就会报错,当然如果你把script标签放到页面最后面那么就没问题了,此时和ready效果一样。

6、document.ready()的使用场景

  点击段落,此段落隐藏

<html>
<head>
<meta charset="utf-8">
<title>
test
</title>
<script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script>
<script>
$(document).ready(function () {
$("p").click(function () {
$(this).hide();
});
});
</script>
</head>
<body>
<p>If you click on me,I will disappear.</p>
</body>
</html>

  如果把$(document).ready(function(){});去掉后,无法隐藏段落

<html>
<head>
<meta charset="utf-8">
<title>
test
</title>
<script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script>
<script>
$("p").click(function () {
$(this).hide();
});
</script>
</head>
<body>
<p>If you click on me,I will disappear.</p>
</body>
</html>

  但是把script放到页面最后的话,就可恢复隐藏效果

<html>
<head>
<meta charset="utf-8">
<title>
test
</title>
<script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script>
</head>
<body>
<p>If you click on me,I will disappear.</p>
<script>
$("p").click(function () {
$(this).hide();
});
</script>
</body>
</html>

  

最新文章

  1. Unity导出xcode后自动化导入第三方SDK
  2. 我的c++学习(7)引用和复制构造函数
  3. Net-SNMP是线程安全的吗
  4. 正确打印含unicode字符的dict
  5. 《Effective C++》条款14 总是让base class拥有virtual destructor
  6. 手机相机ISO是什么
  7. Hibernate 事物隔离级别 深入探究
  8. ural 1119 Metro
  9. BZOJ 1050: [HAOI2006]旅行comf (并查集 或 单调队列)
  10. js解析器(重要!)
  11. 六星经典CSAPP-笔记(7)加载与链接(上)
  12. SVN分支与合并【超详细的图文教程】(转载)
  13. validate表单验证
  14. mysql基本知识点梳理和查询优化
  15. paython3-练习
  16. Win10删除anaconda重装
  17. spring web.xml 难点配置总结【转】
  18. 使用 IntraWeb (8) - 系统模板
  19. Android Studio 无法预览xml布局视图的解决办法
  20. hdu 2874 Connections between cities(st&amp;rmq LCA)

热门文章

  1. VitrualBox虚拟机设置网络桥接方式与windows互相ping通
  2. WPF动画基础及实例
  3. 一起talk C栗子吧(第三十四回:C语言实例--巧用溢出计算最值)
  4. 让checkbox不选中
  5. POJ 1426 Find The Multiple (DFS / BFS)
  6. Windows简单入门-送给第一次使用电脑的朋友
  7. php中类文件名的命名的规则是什么
  8. linux设置tab键的宽度为4
  9. Maven搭建hadoop环境报Missing artifact jdk.tools:jdk.tools:jar:1.7
  10. ListCtrl添加右键菜单(ListCtrl类里编辑,给ListCtrl 发送NM_RCLICK消息)