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>
相关推荐
NEXT06几秒前
React Hooks 进阶:useState与useEffect的深度理解
前端·javascript·react.js
blueSatchel6 分钟前
U-Boot载入到DDR过程的代码分析
linux·开发语言·u-boot
sure2826 分钟前
React Native应用中使用sqlite数据库以及音乐应用中的实际应用
前端·react native
CHU7290357 分钟前
扭蛋机盲盒小程序前端功能设计解析:打造趣味与惊喜并存的消费体验
前端·小程序
前端布道师12 分钟前
Web响应式:列表自适应布局
前端
ZeroTaboo14 分钟前
rmx:给 Windows 换一个能用的删除
前端·后端
无小道15 分钟前
QT——QFIie和QFileInfo文件类
开发语言·qt·命令模式
李剑一24 分钟前
Vue实现大屏获取当前所处城市及当地天气(纯免费)
前端
踢足球092935 分钟前
寒假打卡:2026-2-7
java·开发语言·javascript
_果果然36 分钟前
这 7 个免费 Lottie 动画网站,帮你省下一个设计师的工资
前端