作为一个转行刚到公司的新人,任务不多,这一周任务全部消灭,闲暇的一天也别闲着,悄悄的看起了书。今天写一下JS的事件冒泡、捕获。

也是今天看的内容有点多了,有些消化不了,就随手记录一下。纯属自我理解,如果有不对,还请指导提出,小弟一定改正。

好了,话不多说。那么事件冒泡是什么?

举个例子 ul > li > div > p 。 这个时候你点击P,他会一层一层的往上执行,直到最后绑定事件的元素。假如我们绑定事件在ul上,那么点击P,他就会逐级往上走,直到找到绑定事件的ul也会触发事件,那么在上面已经没有元素了,他就停下了。

如果说你还不懂,那么没办法了,因为爱,再给你解释一遍。ps:你家现在有4个人。 爸爸 > 妈妈 > 你。好了,那现在你爸手握大权(事件绑定在奶奶这),这时候你爷爷睡午觉,你长得太丑把他吓醒了,一巴掌呼在在你大脸上。你开心的就哭了,回家告状去了。这个时候你告状的顺序就是   你 > 妈妈 > 爸爸  。 那么你回去看一遍上面的顺序是不是就和事件冒泡一样?

你还不懂那我只能上代码了

<!DOCTYPE html>
<head>
<title></title>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="">
</head>
<style type="text/css">
#click{
width: 500px;
height: 500px;
background-color: red;
margin: auto; }
#click2{
width: 250px;
height: 250px;
background-color: yellow;
}
</style>
<body>
<div id="click">
  <div id="click2" class="son"></div>
</div>
<script type="text/javascript">
document.getElementById("click2").addEventListener("click",function(e){
alert("有事打我爸,别打我,");
},false);
        document.getElementById("click").addEventListener("click",function(e){
alert("有什么事打我,别打我儿子");
},false);
</script> </body> </html>
1、如果我点击ID=click2,也就是第二个,那么会发生什么?他会先触发click2的事件,接着往上走,再触发click的事件。

2、当点击ID=click元素时,只触发自身的点击事件,因为他自己冒泡上去没有dom元素设置了click事件的函数..

那么什么是事件捕获呢?

刚才说了,事件冒泡就是从底层往底层走。那么捕获刚好反过来,是从顶层往里面走。

也就是说刚才的 ul > li > div > p  例子。事件冒泡是从P到ul,那么事件捕获就是ul到p。举个例子,加入点击事件触发了,他是从从根元素开始就会往下寻找匹配这个事件的子元素,直到找到他。

如果还不懂那么上两张图吧,一张是事件冒泡的,一张是事件捕获的。自行参考(图由本人灵魂画师所制,不足之处请指点)

图为事件冒泡

图为事件捕获。

最新文章

  1. 性能adb命令
  2. java 求 两个数的百分比% (转)
  3. 思考探索,如何才能高效访问我的这个DataTable?
  4. linux gksu用法
  5. Memcached总结三:Memcached常用命令及使用说明
  6. Java 实现折半查找
  7. api1
  8. 在Visual Studio中使用AStyle
  9. W3C-XML
  10. GPS数据处理 - 字符串函数的灵活应用
  11. python开发与实战content
  12. Java NIO Channel之FileChannel [ 转载 ]
  13. c# Lambda操作类封装
  14. 小程序官网CMS开源项目出炉,Weixin-App-CMS 1.0 版本正式发布
  15. nginx根据cookie分流
  16. BZOJ3644 : 陶陶的旅行计划
  17. 2019.02.15 bzoj5210: 最大连通子块和(链分治+ddp)
  18. Linux内核分析 笔记二 操作系统是如何工作的 ——by王玥
  19. Java并发容器之CopyOnWriteArraySet与ConcurrentSkipListSet
  20. vncserve安装配置 (转)

热门文章

  1. java 之DelayQueue实际运用示例
  2. 【 js 片段 】点击空白或者页面其他地方,关闭弹框
  3. Ubuntu双系统环境下隐藏掉其他开机启动项
  4. 转:xdebug在linux下的安装教程
  5. 判断css文件是否加载完成
  6. Dynamics 365 Customer Engagement 中对API的调整内容分享
  7. 2017 先知创新大会:有 ZHI 而来
  8. mvp 在 flutter 中的应用
  9. memcached 的 SockIOPool 概念
  10. c# 将秒数转换成时,分,秒的方法