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>
相关推荐
liu_chunhai3 分钟前
设计模式(3)builder
java·开发语言·设计模式
丁总学Java10 分钟前
微信小程序-npm支持-如何使用npm包
前端·微信小程序·npm·node.js
姜学迁11 分钟前
Rust-枚举
开发语言·后端·rust
冷白白13 分钟前
【C++】C++对象初探及友元
c语言·开发语言·c++·算法
凌云行者17 分钟前
rust的迭代器方法——collect
开发语言·rust
It'sMyGo20 分钟前
Javascript数组研究09_Array.prototype[Symbol.unscopables]
开发语言·javascript·原型模式
懒羊羊大王呀21 分钟前
CSS——属性值计算
前端·css
睡觉然后上课31 分钟前
c基础面试题
c语言·开发语言·c++·面试
李是啥也不会36 分钟前
数组的概念
javascript
qing_04060338 分钟前
C++——继承
开发语言·c++·继承