javaScript div弹出窗口没有隐藏在外部点击

时间:2014-05-19 11:35:07

标签: javascript

我正在创建一个JavaScript弹出窗口。代码如下。

HTML:

<div id="ac-wrapper" style='display:none'>
    <div id="popup">
        <center>
             <h2>Popup Content Here</h2>    
            <input type="submit" name="submit" value="Submit" onClick="PopUp('hide')" />
        </center>
    </div>
</div>

CSS:

#ac-wrapper {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: url("images/pop-bg.png") repeat top left transparent;
    z-index: 1001;
}

#popup {
    background: none repeat scroll 0 0 #FFFFFF;
    border-radius: 18px;
    -moz-border-radius: 18px;
    -webkit-border-radius: 18px;
    height: 361px;
    margin: 5% auto;
    position: relative;
    width: 597px;
}

剧本:

function PopUp(hideOrshow) {
    if (hideOrshow == 'hide') document.getElementById('ac-wrapper').style.display = "none";
    else document.getElementById('ac-wrapper').removeAttribute('style');
}
window.onload = function () {
    setTimeout(function () {
        PopUp('show');
    }, 0);
}

jsFiddle链接:

http://jsfiddle.net/K9qL4/

问题:

我需要在外面关闭这个弹出窗口。我可以点击提交内容关闭它。

我试图在外面点击它?

剧本:

function hideNow()
{
document.getElementById('ac-wrapper').style.display = 'none';
}

HTML代码:

<div id="ac-wrapper" style='display:none' onClick="hideNow()">

实际发生了什么?

它会在外部点击时关闭弹出窗口,但在我尝试访问其中的内容时也会关闭弹出窗口。

我对此问题感到困惑。有人可以指导我吗? 感谢。

2 个答案:

答案 0 :(得分:1)

您需要添加一些代码来检查您是否单击了包装器。像这样的东西会起作用:

<div id="ac-wrapper" style='display:none' onClick="hideNow(event)">

您需要在函数调用中添加event

在您的JS代码中:

function hideNow(e) {
    if (e.target.id == 'ac-wrapper') {
        document.getElementById('ac-wrapper').style.display = 'none';
    }
}

在该功能中,您可以检查event.target是什么(您实际点击的元素)。如果id匹配&#39; ac-wrapper&#39;,您就知道您点击了正确的元素。

请参阅Fiddle

答案 1 :(得分:1)

您可以使用事件的stopPropagation()方法。

看小提琴:http://jsfiddle.net/xWrj9/

 $('#popup').click(function(e){    e.stopPropagation(); });