码迷,mamicode.com
首页 > Web开发 > 详细

JS——冒泡案例

时间:2017-12-05 17:43:17      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:window   触发事件   img   back   play   冒泡   height   var   image   

模态框

1、因为a链接和和顶级document都注册了单击事件,所以要组织a链接冒泡,不然又会从document的单击事件走一遍

2、在document的单击事件中,只需要判断触发事件的目标元素是不是白色盒子部分就行了

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        body, html {
            height: 100%;
        }

        .mask {
            width: 100%;
            height: 100%;
            position: fixed;
            top: 0;
            left: 0;
            background: rgba(0, 0, 0, 0.6);
            display: none;
        }

        .login {
            width: 200px;
            height: 200px;
            background: white;
            margin: 200px auto;
            border: 3px solid #FFA25E;
        }
    </style>
</head>
<body>
<a href="#">注册</a>
<a href="#">登陆</a>
<div class="mask">
    <div class="login" id="login"></div>
</div>
<script>
    //需求:点击登陆a链接,显示模态框,之后点击除了中间白色登陆框部分,都可以将模态框部分隐藏
    var a = document.getElementsByTagName("a")[1];
    var mask = document.getElementsByTagName("div")[0];

    a.onclick = function (ev) {
        ev = ev || window.event;
        mask.style.display = "block";
        if (ev || ev.stopPropagation) {
            ev.stopPropagation();
        } else {
            ev.cancelBubble = true;
        }
    }
    document.onclick = function (ev) {
        ev = ev || window.event;
        var targetId = ev.target ? ev.target.id : ev.srcElement.id;
        if (targetId !== "login") {
            mask.style.display = "none";
        }
    }
</script>
</body>
</html>

技术分享图片

事件委托

1、普通注册事件没有办法为新创建的元素绑定事件。所以我们要使用冒泡的特性,事件委托。

2、

JS——冒泡案例

标签:window   触发事件   img   back   play   冒泡   height   var   image   

原文地址:http://www.cnblogs.com/wuqiuxue/p/7988074.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!