在页面上添加大量的事件处理程序会影响到整个页面的执行效率。因为每个事件处理程序调用的函数都是对象,会占用内存,内存数量越多,性能越差。而且必须事先指定所有事件程序而导致的DOM访问次数会延迟整个页面的交互就绪时间。
事件委托可以很好的解决这个问题。其原理是利用事件冒泡,只指定一个事件处理程序就可以管理某一类的所有事件。
html:
<ul id="mylist">
<li id="list1">list1</li>
<li id="list2">list2</li>
<li id="list3">list3</li>
</ul>
JS:
mylist.onclick = function(event){
var target = event.target;
switch(target.id){
case 'list1':
alert(1);
break;
case 'list2':
alert(2);
break;
case 'list3':
alert(3);
break;
}
}
点击每个li会弹出对应的数字编号。
移除事件处理程序document.onclick = null;