javascript的事件

骑猪看日落 2022-03-31 08:16 295阅读 0赞

原文: javascript的事件

前戏

  今天在博客中看到了javascript的事件机制,就自己试试写一个简单的冒泡捕获测试,但是测试结果出乎了我的意料,主要是自己原来对事件了解不是很清楚,现在写篇博客记录下。

基础

  先来看一下我在Aaron博客中截的一张图03152049-c51d684548e24cf0b79b3c668ec06ebc.jpg

  DOM2中事件有三个阶段

  1. 事件的捕获阶段
  2. 事件的目标阶段
  3. 事件的冒泡阶段

  事件的捕获阶段:是由document元素向发生事件的元素传递。

  事件的目标阶段:是指在找到了发生事件的目标元素这个阶段,找到之后就会执行事件监听器。如果在目标元素上同时绑定捕获和冒泡阶段事件,事件的执行顺序与绑定的顺序有关。其实也好理解,如果是这样的话,在目标元素上绑定了两个阶段的监听事件,因为操作的元素就是目标元素,绑定的事件无须传递,索性就按绑定顺序执行,个人理解。

  事件的冒泡阶段:指由目标元素向上传递,就是想父元素传递,如果遇到监听的事件就执行。可以这么理解,由于是子元素向祖先传递,祖先当然知道是自己下的事件被监听了,因为父元素一直包含子元素。

  例子

  http://sandbox.runjs.cn/show/whkkse7t

  代码

  

  1. 1 <!DOCTYPE HTML>
  2. 2 <html>
  3. 3 <head>
  4. 4 <title>js事件</title>
  5. 5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. 6 <style type="text/css">
  7. 7 #outer{
  8. 8 border:1px solid red;
  9. 9 height:200px;
  10. 10 width:200px;
  11. 11 }
  12. 12 #middle{
  13. 13 border:1px solid blue;
  14. 14 height:100px;
  15. 15 width:100px;
  16. 16 margin:50px auto;
  17. 17 }
  18. 18 #inner{
  19. 19 border:1px solid black;
  20. 20 height:50px;
  21. 21 width:50px;
  22. 22 margin:25px auto;
  23. 23 }
  24. 24 </style>
  25. 25 <script type="text/javascript">
  26. 26 window.addEventListener("load",init,false);
  27. 27 function init(){
  28. 28 var obj = document.getElementById("middle");
  29. 29 obj.addEventListener("click",function(e){alert(e.target.id+" 冒泡")},false);//1
  30. 30 obj.addEventListener("click",function(e){alert(e.target.id+" 捕获")},true);//2
  31. 31 }
  32. 32 //document.addEventListener("DOMContentLoaded",function(){alert("s")},false);
  33. 33 //这里为了方便直接在同一个元素绑定了两个事件
  34. 34 //点击middle元素,依次会执行代码1和2,此时的执行顺序和绑定事件的顺序相同
  35. 35 //点击inner元素时,会先执行代码2再执行代码1,此时就先执行捕获阶段在执行冒泡阶段
  36. 36 //可以这么说 如果在目标元素上绑定事件,事件的执行顺序与绑定的执行顺序相同,否则先捕获阶段在冒泡阶段
  37. 37 </script>
  38. 38 </head>
  39. 39 <body>
  40. 40 <div id="outer">
  41. 41 <div id="middle">
  42. 42 <div id="inner">
  43. 43 </div>
  44. 44 </div>
  45. 45 </div>
  46. 46 </body>
  47. 47
  48. 48 </html>

发表评论

表情:
评论列表 (有 0 条评论,295人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JavaScript事件

    什么是事件流 javaScript与HTML之间的交互是通过事件实现的。事件,就是文档或浏览器窗口中发生的一些特定的交互瞬间。可以使用侦听器(或处理程序)来预订事件,以便

    相关 JavaScript 事件

    第1章 事件入门 JavaScript 事件是由访问 Web 页面的用户引起的一系列操作,例如:用户点击。当用户执行某些操作的时候,再去执行一系列代码。 事件介绍

    相关 <javascript>事件

    事件通常分为:事件源和响应行为。 事件在触发后弹出响应块与函数配合使用,这样我们可以通过发生的事件来驱动函数执行. 1、js的常用事件 ![常见事件][SouthEas

    相关 JavaScript-事件

    事件(Event)是JavaScript应用跳动的心脏,当我们与浏览器中Web页面进行某些类型的交互时,事件就发生了。 事件可能是用户在某些内容上的点击、鼠标经过某个特

    相关 javascript事件

    原文: [javascript的事件][javascript] 前戏   今天在博客中看到了javascript的事件机制,就自己试试写一个简单的冒泡捕获测试,但是测试