【问题标题】:javaScript div popup not hiding on outside clickjavaScript div弹出窗口不隐藏在外部点击
【发布时间】:2014-05-19 11:35:06
【问题描述】:

我正在创建一个 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()">

究竟发生了什么?

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

我在这个问题上陷入困境。有人可以指导我吗? 谢谢。

【问题讨论】:

    标签: javascript


    【解决方案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 匹配“ac-wrapper”,则说明您点击了正确的元素。

    Fiddle

    【讨论】:

    • 太棒了..工作得很好。 +1 - @putvande
    • 你能详细说明你做了什么才有效吗?我错在哪里??
    • 得到了解释..再次感谢..只需一个查询..我们也可以在这个弹出窗口中添加一个可拖动的吗??
    • 是的,这应该是可能的。但是有很多形式,这听起来像是一个完全不同的问题;)
    • Lolz .. 是的.. 我将把它作为一个不同的问题发布.. 感谢您的解决方案。应接受您的回答。
    【解决方案2】:

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

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

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

    【讨论】:

    • 感谢 Zekth,但我在这里没有使用 jQuery .. 我使用的是纯 javaScript .. 感谢您的时间.. +1 您的努力
    猜你喜欢
    • 2013-12-26
    • 2022-12-31
    • 1970-01-01
    • 1970-01-01
    • 2015-08-11
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多