zoukankan      html  css  js  c++  java
  • Js阻止事件冒泡 弹出层后点击body区域层消失

    效果预览:

    http://jsfiddle.net/dtdxrk/nMNzT/embedded/result/

    IE的事件流叫做事件冒泡,即事件开始时由最具体的元素接受,然后逐级向上传播到较为不具体的节点.

    简单点说就是给一个子元素绑定一个onclick事件 当点击的时候body也等于被点击了.

    所以有时候需要阻止一下事件冒泡.

    event.bubbles 表明事件是否冒泡

    event.cancelable 表明是否可以取消事件的默认行为

     1 <!DOCTYPE HTML>
     2 <html lang="en">
     3 <head>
     4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     5 <title>Js阻止事件冒泡 弹出层后点击body区域层消失 </title>
     6 <style type="text/css">
     7 body{background-color: #eee;}
     8 div#box { background-color: #fff;border: 5px solid #000; width: 300px; height: 100px;display: none;}
     9 
    10 </style>
    11 </head>
    12 
    13 <body>
    14     <input id="bt" type="button" value="点击弹出div" />
    15 <div id="box">
    16        <ul>
    17         <li><span>css</span></li>
    18         <li><span>html</span></li>
    19         <li><span>js</span></li>
    20       </ul>
    21 </div>
    22 
    23 
    24 <script type="text/javascript">
    25 document.getElementById("bt").onclick = function(){
    26     document.getElementById("box").style.display = "block";
    27 }
    28 
    29 document.getElementById("box").onclick = function(e){
    30     e = e || window.event;
    31     if(window.event){    //阻止事件冒泡
    32         e.cancelBubble = true;
    33     } else {
    34         e.stopPropagation();
    35     }
    36 }
    37 
    38 document.body.onclick = function(e){
    39     e = e || window.event;
    40      var target = e.target || e.srcElement;
    41     if(target.id === "box" || target.id === "bt") {
    42         return;
    43     } else {
    44         document.getElementById("box").style.display = "none";
    45     }
    46 }
    47 </script>
    48 
    49 
    50 </body>
    51 </html>
  • 相关阅读:
    Expert C programming书摘
    修改文件时间属性的方法
    算法学习, 开始计划
    小游戏学习搜集
    C++ 练习记录2---Effective STL中的vector<bool>
    C++ 练习记录1--vector<T> 中T的初始化
    oracle的wm_concat函数实现行转列
    Oracle批量插入有日期类型数据
    如何将zTree选中节点传递给后台
    第五章:1.数组和广义表 -- 数组
  • 原文地址:https://www.cnblogs.com/dtdxrk/p/2583214.html
Copyright © 2011-2022 走看看