js事件委托,解决在父级上绑定事件,子级是复杂层级无法直接通过event.target获取到的问题

html 复制代码
<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width, initial-scale=1.0">
		<title>Document</title>
		<style>
			.item1 {
				display: inline-block;
				margin-bottom: 10px;
				padding: 10px;
				background-color: greenyellow;
			}
			
			.item-2 {
				width: 100px;
				height: 100px;
				background-color: pink;
			}
		</style>
	</head>
	<body>

		<div class="box" data-value='box'>
			<div class="item1" data-value='你好啊'>
				<div class="item-2" data-value="item-2">
					<button>文章</button>
				</div>
			</div>
			<div class="item1" data-value='你好啊'>
				<div class="item-2" data-value="item-2">
					<button>文章</button>
				</div>
			</div>
			<div class="item1" data-value='你好啊'>
				<div class="item-2" data-value="item-2">
					<button>文章</button>
				</div>
			</div>
		</div>
		<script>
			document.querySelector('.box').addEventListener('click', event => {
				const composedPath = event.composedPath();
				for (const element of composedPath) {
					if (element.classList && element.classList.contains('item1')) {
						console.log(element.dataset.value)
						break;
					}
				}
			})
		</script>
	</body>
</html>
相关推荐
马士兵教育13 小时前
计算机专业学生入行IT行业,编程语言如何选择?
java·开发语言·c++·人工智能·python
码界奇点13 小时前
基于eBPF技术的高性能网络防火墙系统设计与实现
开发语言·网络·毕业设计·php·wpf·go语言·源代码管理
一起养小猫13 小时前
Flutter for OpenHarmony 实战:ListView与GridView滚动列表完全指南
开发语言·javascript·flutter
程序员清洒13 小时前
Flutter for OpenHarmony:ListView — 高效滚动列表
开发语言·flutter·华为·鸿蒙
naruto_lnq13 小时前
C++与自动驾驶系统
开发语言·c++·算法
熊猫钓鱼>_>13 小时前
从零到一:打造“抗造” Electron 录屏神器的故事
前端·javascript·ffmpeg·electron·node·录屏·record
wjs202413 小时前
jEasyUI 启用行内编辑
开发语言
夕除13 小时前
js--6
java·开发语言
ytttr87313 小时前
C#实现海康威视智能车牌识别
开发语言·c#
梵刹古音14 小时前
【C语言】 关键字与用户标识符
c语言·开发语言