我正在创建一个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链接:
问题:
我需要在外面关闭这个弹出窗口。我可以点击提交内容关闭它。
我试图在外面点击它?
剧本:
function hideNow()
{
document.getElementById('ac-wrapper').style.display = 'none';
}
HTML代码:
<div id="ac-wrapper" style='display:none' onClick="hideNow()">
实际发生了什么?
它会在外部点击时关闭弹出窗口,但在我尝试访问其中的内容时也会关闭弹出窗口。
我对此问题感到困惑。有人可以指导我吗? 感谢。
答案 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(); });