前言
dom事件流的三个阶段:
- 事件捕获阶段 capturing:从外到里进行事件传播,从根节点开始
- 目标阶段
- 事件冒泡阶段 bubbling:从里到外进行事件传播,直到根节点
触发dom事件时,先进行事件捕获 外->里,捕获到事件源之后通过事件传播,再进行事件冒泡 里 -> 外。
事件绑定
- addEventListener(event, listener, userCapture)(ie11及以上,支持事件捕获)
- event: string
- listener: Function 事件监听函数
e.stopPropagation()
阻止事件冒泡到父元素- e.preventDefault() 阻止浏览器默认行为:如阻止href,input提交
- e.stopImmediatePropagation()
- return false,包括
- 1 阻止冒泡
- 2 阻止默认行为
- 停止回调函数并立即返回
useCapture
: boolean- 默认为 false,采用事件冒泡的方式
- true,采用事件捕获的方式
- attachEvent(event, listener)(ie10及以下,不支持事件捕获)
- event
- listener
事件委托
- 一般用于动态生成的dom
- $(selector).on(event, childSelector, data, function, map)
- 通过父元素的事件绑定,判断目标元素是否为子元素