事件机制
事件触发三阶段
- window往事件触发处传播,遇到注册的捕获事件会触发
- 传播到事件触发处时触发注册的事件
- 从事件触发处往window传播,遇到注册的冒泡事件会触发
事件触发一般来说会按照上面的顺序进行。但也有特例,如果给一个目标节点同时注册冒泡和捕获事件,事件触发会按照注册的顺序执行
注册事件
addEventListener 注册事件
一般来说,我们只希望事件只触发在目标上,这时可以使用stopPropagation来阻止事件的进一步传播。通常我们认为stopPropagation是用来阻止事件冒泡的,其实该函数也可以阻止捕获事件
stopImmediatePropagation 同样也能阻止事件,但是还能阻止该事件目标执行别的注册事件
事件代理
如果一个节点中的子节点是动态生成的,那么子节点需要注册事件的话应该注册在父节点上
事件代理的方式相对于直接给目标注册事件来说,有以下优点:
- 节省内存
- 不需要给节点注销事件
