事件委托是一种提高程序性能、减少内存空间的技术手段,它利用了事件冒泡的特性,只需在某个祖先元素上注册一个事件,就能管理其他所有后代元素上同一类型的事件。
事件委托的原理:就是自己的事情交给别人去做,即事情委托给别人。
利用事件委托,通过冒泡原理将子元素的点击事件交给父元素来处理
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<ul id="test">
<li>第一行</li>
<li>第二行</li>
<li>第三行</li>
</ul>
<script>
var oul=document.getElementById("test");
oul.addEventListener("click",function (ev){
var ev=ev||window.event;
var target=ev.target||ev.srcElement;
if(target.nodeName.toLowerCase()=="li"){
//也可以用target.tagName
console.log(target.innerHTML);
}
})
</script>
</body>
</html>
使用委托后就能避免对容器中的每个子元素注册事件,并且如果在容器中动态动态添加子元素,新加入的子元素也能使用容器元素上注册的事件,而不用再单独绑定一次事件处理程序。