1、事件概念

HTML中与javascript交互是通过事件驱动来实现的,例如鼠标点击事件、页面的滚动事件onscroll等等,可以向文档或者文档中的元素添加事件侦听器来预订事件。想要知道这些事件是在什么时候进行调用的,就需要了解一下“事件流”的概念。

(1)什么是事件流

事件流描述的是从页面中接收事件的顺序

a、DOM事件流

“DOM2级事件”规定的事件流包括三个阶段:

① 事件捕获阶段;

② 处于目标阶段;

③ 事件冒泡阶段

那么其实呢,js中还有另外一种绑定事件的方式:看下面代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>事件流</title>
<script>
window.onload = function () {
let oBtn = document.getElementById('btn');
oBtn.addEventListener('click', function () {
console.log('btn处于事件捕获阶段');
}, true);
oBtn.addEventListener('click', function () {
console.log('btn处于事件冒泡阶段');
}, false);
document.addEventListener('click', function () {
console.log('document处于事件捕获阶段');
}, true);
document.addEventListener('click', function () {
console.log('document处于事件冒泡阶段');
}, false);
document.documentElement.addEventListener('click', function () {
console.log('html处于事件捕获阶段');
}, true);
document.documentElement.addEventListener('click', function () {
console.log('html处于事件冒泡阶段');
}, false);
document.body.addEventListener('click', function () {
console.log('body处于事件捕获阶段');
}, true);
document.body.addEventListener('click', function () {
console.log('body处于事件冒泡阶段');
}, false);
}; </script>
</head>
<body>
<a href="javascript:void(0)" id="btn">按钮</a>
</body>
</html>

执行效果:

解释:事件流首先是经过事件捕获阶段,接着是处于目标阶段,最后是事件冒泡阶段。这里可以画个图示意一下:

首先在事件捕获过程中,document对象首先接收到click事件,然后事件沿着DOM树依次向下,一直传播到事件的实际目标,就是id为btn的a标签。

接着在事件冒泡过程中,事件开始时由最具体的元素(a标签)接收,然后逐级向上传播到较为不具体的节点(document)。

2、jQuery中的常用事件

最新文章

  1. Toast显示图文界面——Android开发之路1
  2. BZOJ1503——郁闷的出纳员
  3. android api汇集
  4. spring配置带参数的视图解析器:ParameterMethodNameResolver
  5. iOS播放动态GIF图片
  6. 使用RedisTemplate的操作类访问Redis(转)
  7. 关于完成端口IOCP异步接收连接函数AcceptEx注意事项
  8. linux的Ubuntu
  9. Javascript Event
  10. c# 课堂总结6 --集合与结构体
  11. Java和C#的socket通信相关(转)
  12. flex sqlite基本用法
  13. jmeter日记
  14. SpringBoot之整合Mybatis范例
  15. Spring整体了解
  16. Scoop Windows 的命令行安装程序管理工具
  17. 网络管理命令ping和arping
  18. Restful API设计规范及实战【说的比较清楚了】
  19. Android.API.Context.getFilesDir()
  20. Caffe学习系列(17): blob

热门文章

  1. ajax 跨域要点
  2. 用Lua的协程实现类似Unity协程的语句块
  3. 怎样创建一个独立于当前文档的新的Document对象
  4. Java 并发进阶常见面试题总结
  5. Scala学习二十二——定界延续
  6. WebApi 空项目生成帮助文档
  7. JS基础_全局作用域
  8. Ubuntu16.04 + caffe + cuda 环境搭建
  9. EF Core的级联删除
  10. NPOI 实现在已存在的Excel中任意位置开始插入任意数量行,并填充数据