- 简介
- 事件流是一个时间沿着特定的数据结构传播的过程,冒泡和捕获是事件在js中的两种不同的传播方式
- 事件流一般有三个阶段:
- 事件捕获阶段
- 目标阶段
- 事件冒泡
- 事件捕获
- 通俗的理解就是,当鼠标点击dom或者触发dom事件时,浏览器会从根节点开始由外到内进行事件传播,即时点击了子元素,如果父元素通过事件捕获的方式注册了对应的事件的话,会先触发父元素绑定的事件
- 事件冒泡:
- 与事件捕获恰恰相反,事件冒泡循序是由内到外进行事件传播,直到根节点无论是事件捕获还是事件冒泡,它们都有一个共同的行为,就是事件传播
- 事件流的阻止
event.preventDefault()
:取消事件对象的默认动作以及继续传播。event.stopPropagation()/ event.cancelBubble = true
:阻止事件冒泡。- 在
IE
下使用event.returnValue= false
, - 在非
IE
下则使用event.preventDefault()
进行阻止 preventDefault
告诉浏览器不用执行与事件相关联的默认动作(如表单提交)stopPropagation
是停止事件继续冒泡,但是对IE9以下的浏览器无效