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>
相关推荐
菠菠萝宝几秒前
【Java八股文】10-数据结构与算法面试篇
java·开发语言·面试·红黑树·跳表·排序·lru
奔跑吧邓邓子4 分钟前
【Python爬虫(36)】深挖多进程爬虫性能优化:从通信到负载均衡
开发语言·爬虫·python·性能优化·负载均衡·多进程
不会Hello World的小苗7 分钟前
Java——链表(LinkedList)
java·开发语言·链表
lsx20240620 分钟前
Perl 面向对象编程指南
开发语言
bubusa~>_<24 分钟前
解决npm install 出现error,比如:ERR_SSL_CIPHER_OPERATION_FAILED
前端·npm·node.js
Allen Bright41 分钟前
【Java基础-46.3】Java泛型通配符详解:解锁类型安全的灵活编程
java·开发语言
[廾匸]1 小时前
cesium视频投影
javascript·无人机·cesium·cesium.js·视频投影
画个逗号给明天"1 小时前
C++STL容器之list
开发语言·c++
流烟默1 小时前
vue和微信小程序处理markdown格式数据
前端·vue.js·微信小程序
梨落秋溪、1 小时前
输入框元素覆盖冲突
java·服务器·前端