博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript基础学习——事件的冒泡、捕获、委托
阅读量:3917 次
发布时间:2019-05-23

本文共 1490 字,大约阅读时间需要 4 分钟。

1、事件流

事件流指的是从页面中接收事件的顺序。分为冒泡流和捕获流。

DOM二级事件规定事件流包括三个阶段:

1、事件捕获阶段
2、处于目标阶段
3、事件冒泡阶段

DOM在触发事件后,会经历事件捕获和事件冒泡两个最重要阶段。

2、事件冒泡

由最里层向最外层触发事件的过程,叫事件冒泡。

例1:事件冒泡测试

  
Document
Please click me!

如果单击了div,事件会按child->parent->body->document->window顺序触发,相当于逐级向上触发,这种情况叫事件冒泡。

 

3、事件捕获

由最外层向最里层触发事件的过程,叫事件捕获。

语法:DOM.addEventListener('事件名',callback,true)

  
Document
Please click me!

由最外层向最里层触发事件的过程,叫事件捕获,这个过程与事件冒泡的过程是相反的,如果想要把事件冒泡改为事件捕获,要用addEventListener去写事件监听,不要直接用onXXX事件去写,将触发的子元素的父元素以上的元素的事件后用true实现。

 

4、阻止冒泡

var e = e || window.event;

e.stopPropagation ? e.stopPropagation() : e.cancelBubble = true; // 阻止事件冒泡兼容写法

e.stopPropagation(); // 不考虑兼容的写法

例3:测试阻止冒泡

  
Document
Please click me!

5.事件委托

将所有子元素的事件写到(委托)父元素上,这样的过程叫事件委托。

使用场景:

1、将多个子元素的事件委托给父元素完成(基于性能优化的考虑)
2、在动态加进来元素上绑定事件

例4:测试事件委托

  
Document
  • li01
  • li02
  • li03
  • li04
  • li05

 event.js中的代码

var eventDeal = {  //event对象兼容处理  getEvent: function (event) {    return event || window.event  },  //目标对象兼容处理  getTarget: function (event) {    return event.target || event.srcElement  },  //绑定事件兼容处理  addHandler: function (element, type, handler) {    if (element.addEventListener) {      element.addEventListener(type, handler, false)    } else if (element.attachEvent) {//兼容IE低版本      element.attachEvent('on' + type, handler)    } else {      element['on' + type] = handler    }  }}

 

转载地址:http://ifvrn.baihongyu.com/

你可能感兴趣的文章
Pareto
查看>>
N个正数选取若干个数之和最接近M
查看>>
278 First Bad Version
查看>>
43 Multiply Strings
查看>>
利用Storyboard实现复杂项目
查看>>
关于iPhone和iPad的图标的思考
查看>>
IOS UITableView中行的操作
查看>>
UIViewController生命周期
查看>>
symbol(s) not found for architexture i386 路径错误
查看>>
iPhone的九宫格实现代码
查看>>
iPhone开发中UIPageControl实现自定义按钮
查看>>
关于UIButton的highlighted状态的总结
查看>>
先学再做、先做再学、边做边学,到底一样以什么样的方式来学一项新技术
查看>>
iphone开发-地图注解(地图上的大头针)
查看>>
Java:类与继承
查看>>
深入理解Java:String
查看>>
Java异常处理和设计
查看>>
Java设计模式之观察者模式
查看>>
一位资深程序员大牛给予Java初学者的学习路线建议
查看>>
浅谈Java中的hashcode方法
查看>>