给动态生成dom添加事件--利用事件委托

832 阅读1分钟

动态生成的 DOM 元素之所以无法绑定事件,是因为 JS 在初次加载时就已经把对应的DOM 元素事件监听工作做完了,在事件监听的容器中已经包含了对应的 DOM 元素对象,而由用户交互而动态生成的 DOM 元素由于无法引起页面重载,所以自然无法再加入到事件监听容器中。

解决方案:可以通过事件委托的方式来实现为动态生成的元素绑定事件。

事件委托原理:以父元素的名义定义事件,但事件内部却是通过 e.target 实时获取到用户点击的子元素,并对该子元素进行操作处理

如:页面先有一个div盒子,盒子里初始没有内容,内容是动态获取的,现在想给动态获取的内容添加个事件,怎么处理呢?

image.png

首先获取到元素dom,再给dom添加事件监听

image.png

当你想触发动态获取的内容中的某个地方,可以在target中找到对应的内容,匹配后再进行你想要的操作

image.png

重点在于事件中触发的 Event 事件对象中的 e.target 这个对象可以实时获取当前页面点击的 DOM 元素对象,捕获到你想要的元素,并在事件委托函数中对该元素做出处理。