学习中,有时遇到event.target,总是不明白为什么要用target,后来学习了下,大概了解了event.target到底指什么元素了,关于event和this的内容,下回再说:

先摆结论:event.target指向事件执行时鼠标所点击(假设是click事件)区域的那个元素。如果事件绑定的元素内部有子元素,那么event.target指向这个子元素,如果没有,event.target指向事件所绑定的元素。看代码:

<html>
<head>
<title>prac</title>
<meta charset="utf-8">
<style type="text/css">
    *{margin:0;padding:0;font-size: 20px;}
    #div1{background-color: lightblue;height: 300px;}
    #p1{background-color: red;height: 100px;}
    #p2{background-color: pink;height: 100px;}
</style>
<script type="text/javascript">
function getEventTrigger(event)
  {
  x=event.target;
  alert("event.target元素的id: " + x.id+",事件类型:"+event.type);
  }
</script>
</head>
<body > <div id="div1" onmousedown="getEventTrigger(event)"> <p id="p1">我是p1</p> <p id="p2">我是p2</p> 父块div1剩下的部分 </div> </body>
</html>

如上图:给父块div1绑定mousedown事件,调用函数getEventTrigger,弹出event.target元素的id:和事件类型,div1里面加了两个子元素,p1和p2,剩下的是div1没有被覆盖的部分;

效果如下:当你在p1里按下鼠标时,弹出p1的id;p2里按下鼠标时,弹出p2的id;在div1里按下鼠标时,弹出的就是div1的id;

也就验证了上面的结论:event.target指向事件执行时鼠标所点击(假设是click事件)区域的那个元素。如果事件绑定的元素内部有子元素,那么event.target指向这个子元素,如果没有,event.target指向事件所绑定的元素。

后面再附个链接和w3school的解释,感觉解释的不清楚,不过案例是用他的代码改的,嘿嘿

target 事件属性可返回事件的目标节点(触发该事件的节点),如生成事件的元素、文档或窗口。
http://www.w3school.com.cn/jsref/event_target.asp

05-11 19:38