事件冒泡与捕获&事件委托
来源:互联网 发布:2017淘宝差评被报复 编辑:程序博客网 时间:2024/05/16 11:12
设想这样一种情况
一个div里面有个span元素 ,当鼠标单击span时,这个事件算是谁的? div还是span?
准确的说两个都触发了,这种认可大家都同意,事实就是这样的,
第二个问题来了,这个事件应该有个先后顺序 ,先触发span还是div?
早期就有两个主流的浏览器厂商各执己见,IE认为,这个事件首先触发span,然后依次往父节点传递,最终传递到document,(这个过程称为冒泡)
网景浏览器认为,任何事件都首先触发document,然后依次往下传递到span元素,(这个过程称为捕获)
按正常人的思维更加倾向与冒泡这种方式,笔者也是这么觉得的,
后来的w3c标准觉得两种方式各有优点,于是综合了两种方式,因此两种都是标准,
就目前来看,IE用户有下降的趋势,标准的w3c浏览器用户在不断增加,但是IE用户毕竟不少,
所以大部分网站开发人员都不会用捕获,因为IE不支持捕获,而其他w3c标准浏览器既支持捕获又支持冒泡,
所以很多人只知道冒泡不知道捕获,就大部分事件处理逻辑来看,冒泡基本已经能够完成,但是捕获有自己的优势,某些相对复杂的事件处理采用冒泡结合捕获会更佳,
以上是个人对事件冒泡以及捕获的理解,下面利用冒泡来看一下事件委托实现原理(采用捕获同样可以实现,道理一样)
根据事件冒泡机制,任何事件都会冒泡到document,事件委托就是把所有事件处理函数绑定到document,根据事件参数判断事件源对象,
判断不同的对象给予不同的处理函数,
举个例子:(jquery方式)
$(document).on("click",function(e){var _this = e.target; //获取事件源对象var id = $(_this).attr('id'); //获取对象的idswitch(id){case "btnid" : function(){ //do some thing} ; break;case "divid" : function(){ //do some thing}; break;default : function(){ //do some thing };}});
3 0
- 事件冒泡、事件捕获与事件委托
- 事件冒泡与捕获&事件委托
- 事件冒泡、事件捕获、事件委托
- js事件冒泡,事件捕获,事件委托
- 事件捕获与冒泡
- 事件冒泡与事件捕获
- 事件捕获与事件冒泡
- 事件冒泡与事件捕获
- 事件捕获与事件冒泡
- 事件冒泡与事件捕获
- 事件捕获与事件冒泡
- 事件捕获与事件冒泡
- 事件冒泡与事件捕获
- 事件冒泡与事件捕获
- 事件冒泡与事件捕获
- 事件冒泡与事件捕获
- 事件冒泡与事件捕获
- 面试题-冒泡与捕获、事件委托、ie事件和dom模型事件、鼠标事件
- 一步一步写算法
- ASP.NET的Web.config设置
- java单例模式
- SQLite入门与分析(五)---Page Cache之并发控制
- SQLite Version3.3.6源代码文件结构
- 事件冒泡与捕获&事件委托
- 提交本地目录到SVN、移动SVN中项目、删除本地目录中的svn信息
- apache shiro
- c++肉牛和奶牛
- android pulltorefresh 下拉刷新
- JS的File对象
- 叱咤风云的马云背后的男人们
- SQLite入门与分析(四)---Page Cache之事务处理(3)
- NAND Flash结果详解