事件冒泡
IE的事件流叫做事件冒泡。顾名思义当事件发生后,事件就开始从里向外传播,查看下方代码:
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<div id="myDiv"></div>
</body>
</html>
web前端开发学习Q-q-u-n: 784783012 ,分享学习的方法和需要注意的小细节,不停更新最新的教程和学习方法(详细的前端项目实战教学视频)
如果点击页面中的
元素,那么这个 chick 事件就会按照如下顺序传播:
click 事件 在 直系DOM 树的每一级节点都会发生(自下而上),直到 document 对象。
事件委托
又称事件代理。对“事件处理程序过多”问题的解决方案就是事件委托。事件委托利用了事件冒泡,只指定一个父类事件处理程序,就可以管理某一类型的所有子类元素事件。
<ul id="myList">
<li id="goSth"></li>
<li id="doSth"></li>
<li id="sayHi"></li>
</ul>
三个
- 被单击,按照传统方式,会给他们单独添加事件:
-
document.getElementById('sayHi').onClick(function(){...})
点击事件不多的情况下还好,若是所有元素都采用这样的方式,结果就会有数不清的代码用于添加事件处理。就好比一万个人全挤到公司前台去拿快递,那场面,蔚为壮观啊!但是把快递放到前台,前台接收,然后分批次派送,就会舒服很多:
document.getElementById('myList').onClick(function(ev){ var e = ev || window.event; var target = e.target; switch (target.id) { case 'goSth': ... break; case 'doSth': ... break; ... } })
如果大家对程序员,web前端感兴趣,想要了解学习的,打算深入了解这个行业的朋友,可以加下我们的前端学习扣qun : 784783012 ,不论你是学生还是想转行的朋友,我都欢迎,不定期分享干货,整理的一份2019最新的web前端学习资料和0基础入门教程分享给大家,学习前端我们是认真的
上面是用事件委托的方式,子元素是带有事件效果的,我们可以发现,当用事件委托的时候,根本就不需要去遍历元素的子节点,只需要给父级元素添加事件就好了,子元素点击,会通过以事件冒泡的方式激活父元素已添加的相同事件,减少了很多 js 对于 dom 的事件操作,占用更少的内存,这大概是事件委托的精髓所在。
所有用到按钮的事件(多数鼠标和键盘事件)都适合采用事件委托。