事件委托

概述

事件委托是对“事件处理程序过多”问题的解决方案。

原理

事件委托利用了事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。

代码

<ul id="myLinks">
	<li id="goSomewhere">Go somewhereli>
	<li id="doSomething">Do somethingli>
	<li id="sayHi">Say hili>
ul>
let list = document.getElementById('myLinks');

EventUtil.addHandler(list, 'click', function(event) {
   event = EventUtil.getEvent(event);
   let target = EventUtil.getTarget(event);

   switch(target.id) {
      case 'doSomething':
         document.title = 'I changed the document"s title';
         break;

      case 'goSomewhere':
         location.href = 'http://www.wrox.com';
         break;

      case 'sayHi':
         alert('hi');
         break;
   }
})

EventUtil请参考【事件处理程序】这篇博客

在这段代码里,我们使用事件委托只为

    元素添加了一个onclick事件处理程序。由于所有列表项都是这个元素的子节点,而且它们的事件会冒泡,所以单击事件最终会被这个函数处理。

你可能感兴趣的:(javascript,内存优化)