在一个复杂的Web应用程序中,如果我们对一个父元素的许多子元素设置点击后触发函数,一个一个设置是很费劲而消耗内存的,所以想这种用到按钮的事件(多数鼠标事件和键盘事件)要用到事件委托,即在DOM树中尽量最高的层次上添加一个事件处理程序即可。样例:
<!DOCTYPE html>
<html>
<head>
<title>test</title>
<meta charset="utf-8" />
<style>
</style>
</head>
<body>
<ul id="list">
</ul>
<button id="but">点击添加</button>
<script>
var btn=document.getElementById("but");
var ul=document.getElementById("list");
btn.addEventListener('click',function(){
var li=document.createElement('li');
li.innerHTML="liaoliao";
ul.appendChild(li);
})
ul.addEventListener('click',function(e){
var lis=ul.querySelectorAll('li');
for(var i=0;i<lis.length;i++)
lis[i].index=i;
var tar=e.target;
if(tar.nodeName.toLowerCase()=='li')
alert("i'm liao"+tar.index);
});
</script>
</body>
</html>