JavaScript--阻止事件冒泡stopPropagation和cancelBubble

Posted QinXiao.Shou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript--阻止事件冒泡stopPropagation和cancelBubble相关的知识,希望对你有一定的参考价值。

  1 <!DOCTYPE html>
  2 <html lang="en" xmlns="http://www.w3.org/1999/html">
  3 <head>
  4     <meta charset="UTF-8">
  5     <title>Title</title>
  6     <style>
  7         #yeye{
  8             width: 500px;
  9             height: 500px;
 10             background-color: #f24b4b;
 11         }
 12         #baba{
 13             width: 400px;
 14             height: 400px;
 15             background-color: #44c28d;
 16         }
 17         #erzi{
 18             width: 300px;
 19             height: 300px;
 20             background-color: #6e8cd5;
 21         }
 22     </style>
 23     <script>
 24     window.onload = function () {
 25 
 26     /**
 27     *
 28     *
 29     *    事件捕获:
 30     *       浏览器就好像盲人一样,要找某个元素,其实挨个挨个问的方式去找
 31     *          这个过程我们叫事件的捕获过程.
 32     *          //  从外到里,直到找到目标
 33     *
 34     *    事件冒泡:
 35     *       找到到目标后,其实还有一个回馈的过程,逐级往上传播
 36     *          这个过程我们叫事件的冒泡过程.
 37     *          //  从里到外,直到传到window
 38     *
 39     *        注意:
 40     *            我们一般都是事件冒泡的方式注册事件的
 41     *
 42     *
 43     *   事件的三个阶段
 44 
 45     1. 捕获阶段
 46     2. 当前目标阶段
 47     3. 冒泡阶段
 48     事件对象.eventPhase属性可以查看事件触发时所处的阶段
 49 
 50     *
 51     * */
 52 
 53     var yeye = document.getElementById("yeye");
 54     var baba = document.getElementById("baba");
 55     var erzi = document.getElementById("erzi");
 56 
 57     erzi.onclick = function (event) {
 58         event = event || window.event;
 59         if(event.stopPropagation) {
 60             // ie9+ 其余全支持
 61             event.stopPropagation();
 62         }else{
 63             // 全部兼容 兼容ie8
 64             event.cancelBubble = true;
 65         }
 66         console.log("儿子", event);
 67     }
 68     baba.onclick = function (event) {
 69         event = event || window.event;
 70         if(event.stopPropagation) {
 71             // ie9+ 其余全支持
 72             event.stopPropagation();
 73         }else{
 74             // 全部兼容 兼容ie的
 75             event.cancelBubble = true;
 76         }
 77         console.log("爸爸", event);
 78     }
 79     yeye.onclick = function (event) {
 80         event = event || window.event;
 81         if(event.stopPropagation) {
 82             // ie9+ 其余全支持
 83             event.stopPropagation();
 84         }else{
 85             // 全部兼容
 86             event.cancelBubble = true;
 87         }
 88         console.log("爷爷", event);
 89     }
 90     }
 91 </script>
 92 </head>
 93 <body>
 94 <div id="yeye">
 95     <div id="baba">
 96         <div id="erzi"></div>
 97     </div>
 98 </div>
 99 </body>
100 </html>

 

以上是关于JavaScript--阻止事件冒泡stopPropagation和cancelBubble的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 兼容各大浏览器阻止冒泡事件

JavaScript 停止事件传播(阻止事件冒泡)

javascript, jQuery阻止默认事件和冒泡事件

javascript, jQuery阻止默认事件和冒泡事件

javascript 跨浏览器事件对象阻止默认事件阻止冒泡兼容写法

JavaScript阻止冒泡和取消事件默认行为