事件代理
如果一个节点的子节点是动态生成的,那么子节点需要注册的事件应该注册到父节点上。
<!DOCTYPE html>
<html lang="en">
<head>
<title>Document</title>
</head>
<body>
<ul id="ul">
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
<script>
const ul = document.getElementById('ul');
ul.addEventListener('click',event=>{
event = event || window.event;
const target = event.target || event.srcElement;
if(event.target.nodeName.toLowerCase()==='li'){
console.log(target.innerHTML);
}
})
</script>
</body>
</html>
优点:
-
节省内存
-
不需要给子节点注销事件