?
利用冒泡原理,解决同个父级标签下子级标签点击后都会到父级上触发的技巧
优点:
- 减少事件监听注册次数,提高性能
- e.target 获得冒泡源对象(即刚刚点击的子级DOM对象)
- e.target.tagName 获得冒泡源的标签名 (如 OL、UL、LI 是大写的标签名)
- HTML上自定义id
<li data-id="2">, js 上拿到idconst i = e.target.dataset.id
tab 用时间委托实现
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
ul {
width: 300px;
height: 300px;
border: 1px solid black;
}
.select {
color: pink;
}
</style>
</head>
<body>
<ul class="nav">
<li data-id="0">第一个</li>
<li data-id="1">第二个</li>
<li data-id="2">第三个</li>
</ul>
<script>
const ul = document.querySelector('ul')
ul.onclick = function (e) {
if(document.querySelector('ul .select')){
document.querySelector('ul .select').classList.remove('select')
}
e.target.classList.add('select')
console.log(e.target.dataset.id);
}
</script>
</body>
</html>