前端学习(七十) DOM-事件模型(Dom)

事件模型

首先,先简单的看一下事件流

window -> document -> <html> -> <body> -> <div> -> <p> -> <a>

简单的说就是事件的处理过程,通常来说分为三个阶段,举例

假如,现在点击了a标签,触发了跳转的,那么实际上,这个事件分为了三个步骤

步骤一:capture phase,事件捕获过程

从window开始一直往下走,直到p元素

步骤二:target phase,获取目标阶段

获取到p元素下的a标签

步骤三:bubble phase,冒泡阶段

将事件一直返回到最顶端window对象

扫描二维码关注公众号,回复: 2843329 查看本文章

事件代理

简单的说,就是,假如有多个子元素,每个子元素都有一个事件监听,那么这样的重复工作就会很多,需要帮每个子元素都绑定一个事件监听,成本高,效率低,那么,我们就给统一给父元素绑定一个事件监听,监听是哪个子元素触发了事件,这种父级元素监听子元素并作出处理的过程就是事件代理也就是父级元素代理了子元素的事件统一处理

原理就是,在我们上面步骤三中,基于冒泡的原理,当事件冒泡到父级元素时处理子元素事件

大概举例:

            var a=document.getElementById('div1');
            a.addEventListener('click',function (event) {
                var e=event || window.event;
                var target = e.target || e.srcElement;
                
            })

首先,先获取目标父级div,然后给父级a绑了一个事件监听,监听的是clikc(点击事件),通过回调函数,获取点击目标(后面会详解)

事件代理的优点

  • 需要管理的回调函数handler更少了
  • 内存分配更少了
  • 增加/删除节点时可以不需要额外绑定事件,是动态添加减少的
  • 避免增删节点过程中的内存泄漏

猜你喜欢

转载自blog.csdn.net/zy21131437/article/details/81711648