JS事件流

流:就是流向,有方向的的意思,比如单向数据流.

事件流:就是事件的流向,当事件发生时,响应事件的顺序,是从里向外流,还是从外向里流.

其中自然响应事件的顺序也是从里向外的,事件冒泡流也是大部分浏览器采用的默认方式

JS事件流分为三个阶段   

    1,事件捕获阶段。

    2,处于目标阶段。

    3,事件冒泡阶段。

事件冒泡:由目标元素上所产生的动作为事件触发源,然后事件层层向其父代递交,直至到document节点,期间可能产生连锁的事件触发.(由下到上,有具体元素到抽象元素)

处于目标阶段:就是事件的具体触发元素

事件捕获阶段:和事件冒泡相反.由上到下,抽象元素到具体元素

事件捕获的优先级比事件冒泡优先级要高,如果一个dom既绑定了捕获又绑定了冒泡,优先执行捕获事件

给一个dom绑定一个dom事件

w3c标准:

dom.addEventListenter("事件名","事件函数",boolean),

boolean为true或者false,默认为false,true表示捕获,false表示冒泡

 

ie不做讨论

阻止事件冒泡:event.stopPropagation()

阻止默认事件:event.preventDefault()

应用:事件代理

事件代理别名事件委托:把原本需要绑定到当前子元素上面的事件绑定到了父级身上,让父级去监听事件,利用了事件冒泡原理

事件委托的优点

1.一般的一个父级都会有很多个子级元素,将子级上的每个事件函数都是一个对象,对象都是占用内存的,利用事件委托,将所有事件都绑定到了父级,减少了减少事件注册.也就减少了内存

2.可以实现当新增子元素对象时无需再次对其绑定事件,因为委托给了父级(动态绑定事件)减少重复性工作.

你可能感兴趣的:(JS事件流)