事件委托

86 阅读1分钟

什么是事件委托

简单的来说,事件委托就是利用js事件冒泡的特性,将内层元素的事件委托给外层处理。

事件委托的好处

  1. 如果要给多个li添加相同的事件,使用事件委托只需要给他们的父级添加事件监听。节约了内存,也节省自己的工作量。
  2. 如果某个元素是通过dom后天添加的,那它的事件你是无法去绑定的,这个时候只能用事件委托去处理。

封装事件委托

function on(eventType, element, selector, fn) {
  if (!(element instanceof Element)) {
    element = document.querySelector(element);
  }
  element.addEventListener(eventType, (e) => {
    const t = e.target;
    if (t.matches(selector)) {
      fn(e);
    }
  });
}

注意:

  • 事件委托的实现依靠的冒泡,因此不支持事件冒泡的事件就不适合使用事件委托。
  • 不是所有的事件绑定都适合使用事件委托,不恰当使用反而可能导致不需要绑定事件的元素也被绑定上了事件。