=================
关于事件代理/委托(delegate), 内容很多, 就看这篇文章就好了. https://www.cnblogs.com/liugang-vip/p/5616484.html
以下内容完全是来自它的:
事件委托, 为什么要使用它? 其实对多个 同级的元素 使用 for 循环一样的可以处理它们上面绑定的相同事件, 而且以前还就是这样用的. 但是这样做有几个问题:
一个是 会多次访问dom元素, (造成浏览器多次重绘??), 造成内存中存在多个对象句柄, 总之就是性能很老火...
第二个就是for循环对新加入进来的子元素, 并不会自动绑定之前的for里面的事件.
所以 , 为了提升性能, (如果在它们的共同 父元素上绑定 某个鼠标事件)就可以帮所有的子元素处理同一个事件了,这样就只需要访问一次dom元素, 二是对新加入的子元素一样的道理可以实现加入就有事件的好处/
事件代理, 的基础,是 由于js的冒泡机制...所有子元素的 某种相同类型的鼠标事件 由于冒泡, 都可以被传递到父元素上来....就可以由父元素帮它们处理. 所以事件委托: 是多个子元素 委托它们的父元素 来实现某种事件. 即委托是绑定在 父元素上的, 即父元素就是那个 前台姑娘了.
要知道, 任何机制 都不是 无所不能的, 任何机制都主要是用来 解决某一类的 问题的. 所以 , 事件委托, 也主要是用来处理 多个子元素上 绑定 相同类型的事件时, 或者说, 委托机制是最适合用来 处理 for循环绑定同一类型鼠标事件的.其他地方就不一定适合委托.
同样的道理, 今后如果遇到这种 for循环绑定事件的时候, 就尽量使用委托机制了(其实遇到的时候还是很多的). 这时候, 可能需要 创建一个(即使从语义上可能不需要的) 共同的父元素来包裹它们.
最后并不是所有的 事件都适合用 委托, 就像前台姑娘适合 委托( 收快递, 定盒饭), 但不一定适合委托 带孩子等事情了....
原文:https://www.cnblogs.com/bkylee/p/12428026.html