简单理解
举个例子,要监听 ul 中 li 上的 click 事件,但 li 是动态生成的,可能还不存在,于是监听事件委托给父元素 ul :
1 | ul.addEventListener("click", function (e) { |
但是这样存在问题:如果 li 里还有子元素 span,点击的是 li 里的 span, 无法触发 fn,显然不对。
完整代码
思路是遍历所点击元素的祖先元素,看其中有没有需要触发事件的元素:
1 | function delegate(element, eventType, selector, fn) { |