前世
事件冒泡和事件捕获分别由微软和网景公司提出,这两个概念都是为了解决页面中事件流(事件发生顺序)的问题
原理:
1、加入冒泡机制是因为存在这个现象 子元素存在于父级元素,你点击子元素也是相当于点击了父元素,然后冒泡机制可用于事件委托,优化性能,比如长列表绑定事件
如所说的长列表绑定,笨的做法:每个li上绑定事件,li触发事件,如果1kw条数据,这种做法肯定是不科学的。
所以,优化性能的时候,将事件绑定在ul上,加入冒泡机制,代码量变少、性能又好
2.事件冒泡:
所谓的时间冒泡就是当一个元素触发一个事件,事件会像是水泡一样,从触发元素向它的所有父节点传播,一直到根节点都会接收到此事件,如果父元素中注册了相应的事件处理函数,那么尽管事件在子节点触发的,在父元素上注册的事件处理函数同样会被触发。
比如这次是为了实现点击相应行政区区域图,弹出窗口显示相应的查询数据,结果再给
行政区域绑定监听点击事件时,触发了两次,因为行政区域图是在map地图里的一块区域,这就引发了事件冒泡,从里层(行政区域图)向外层,依次触发点击事件了,比如之前代码如下:
- const initMap = () => {
-
- //首先初始化父级地图
- const map = new BMapGL.Map("myMap");
- let label = new BMapGL.Label(null);
- let x =