繁体   English   中英

单击外部关闭Div

[英]Close Div On Click Outside

我目前正在设计一个网站,在该网站中,用户单击一个按钮,然后会出现带有各种内容的叠加层和框。 当用户单击关闭按钮或在框外单击时,框和所有内容都会淡出。 这是我已经产生的一些代码:

的HTML

<div id="overlay"></div>
<div id="specialBox">
    <p style="text-align: center">Special box content.</p>
    <button type="button" onmousedown="toggleOverlay()">Close Overlay</button>
</div>

的CSS

div#overlay {
    background: #000;
    display: none;
    height: 100%;
    left: 0px;
    position: fixed;
    text-align: center;
    top: 0px;
    width: 100%;
    z-index: 2;
}
div#specialBox {
    background: #fff;
    color: #000;
    display: none;
    position: absolute;
    z-index: 3;
    margin: 150px auto 0px auto;
    width: 500px;
    height: 300px;
    left: 425px;
}

的JavaScript

function toggleOverlay(){
    var overlay = document.getElementById('overlay');
    var specialBox = document.getElementById('specialBox');
    overlay.style.opacity = .8;
    if(overlay.style.display == "block"){
        overlay.style.display = "none";
        specialBox.style.display = "none";
    } else {
        overlay.style.display = "block";
        specialBox.style.display = "block";
    }
}

jQuery(语法可能不正确)

$('html').click(function() {
    if (document.getElementById('#specialBox').***IS_VISIBLE***) {
        $("#specialBox").fadeOut(300);
        $("#overlay").fadeOut(300);
    }
});

当您单击“新闻通讯”时,可以在http://www.madeon.fr上找到一个示例。 您既可以单击关闭按钮,也可以单击外部将其关闭。 现在,我的问题是如何通过工作实现这一目标?

我找出了主要问题。 我只是删除了jQuery,并添加了“ onmousedown ='toggleOverlay()'”作为div#overlay的属性。 然后,当我单击叠加层时,该框消失了。

这是新的HTML:

    <div id="overlay" onmousedown="toggleOverlay()"></div>

您可以通过以下方式实现:使用$(document).click

下面的jsfiddle可以为您提供帮助: http : //jsfiddle.net/jec7rmw6/2/

    function toggleOverlay(){
        if($("#specialBox").is(":visible"))
        {
            $('#specialBox').fadeOut(300);
        }
    }

    jQuery('#specialBox').click(
        function (e) { 
            e.stopPropagation();
        }
    );

    $(document).click(function() {
        if($("#specialBox").is(":visible"))
        {
            $('#specialBox').fadeOut(300);
        }
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM