事件源问题currentTarget

**问题类型:**事件冒泡的问题
**问题情景:**在一个元素中获得他的事件源,并且获得该事件源的属性,结果该属性显示未定义

  1. 首先我们先来看一下事件冒泡的问题

    事件冒泡指的是,在父子元素中,都含有同类型的事件,此时,事件的响应顺序是从子元素开始发生的
    

    如:我们只想实现触发子元素时,响应某种事件
    流程:1.子元素被单击,事件执行完毕
    2.查看该子元素的父元素是否有单击事件,如果有则执行,并且依次向上

<!doctypt>
<html>
	<head>
		<meta charset="utf-8">
		<title>事件冒泡和事件捕获</title>

	</head>
	<body>
		<div id="father">
			父元素
			<div id="son">
				子元素
				<div id="son-son">
					子元素的子元素
				</div>
			</div>
		</div>
	</body>
	<script type="text/javascript">
		let father = document.getElementById("father")
		let son = document.getElementById("son")
		let son_son = document.getElementById("son-son")

		father.onclick = function(e){
			console.log("父元素")
		}

		son.onclick = function(e){
			console.log("子元素")
		}
		son_son.onclick = function(e){
			console.log("子元素的子元素")
		}
	</script>
</html>

当我们单击“子元素的子元素”时,控制台的执行顺序时:

子元素的子元素
子元素
父元素

解决方案:为该事件添加

e.stopPropagation()

**【小结】**这个问题比较简单,上面只是复习一下,接下来的问题是我今天编写案例时遇到的问题

案例需求:单击事件,获得事件源
我的处理方法是:event.target
但是,问题是在我单击到含有子元素的区域时,他的事件源成为了该子元素节点,因此有时候,所需要的属性是未定义,从而导致报错

解决方案:在打印event时,出现一个currentTarget节点,该节点和target节点用法相同,不过前者指的是绑定响应事件的父节点,后者指定是,鼠标单击的区域节点(因此该target是跟随鼠标来决定的)信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值