js中事件委託的優缺點

優勢:

  1. 減小事件註冊,節省內存。好比,
    • 在table上代理全部td的click事件。
    • 在ul上代理全部li的click事件。
  2. 簡化了dom節點更新時,相應事件的更新。好比
    • 不用在新添加的li上綁定click事件。
    • 當刪除某個li時,不用移解綁上面的click事件。

缺點:

  1. 事件委託基於冒泡,對於不冒泡的事件不支持。
  2. 層級過多,冒泡過程當中,可能會被某層阻止掉。
  3. 理論上委託會致使瀏覽器頻繁調用處理函數,雖然極可能不須要處理。因此建議就近委託,好比在table上代理td,而不是在document上代理td。
  4. 把全部事件都用代理就可能會出現事件誤判。好比,在document中代理了全部button的click事件,另外的人在引用改js時,可能不知道,形成單擊button觸發了兩個click事件。
相關文章
相關標籤/搜索