2012-05-03 29 views
1

我使用本教程中添加模态屏幕:点击远离它关闭模式弹出

http://raventools.com/blog/create-a-modal-dialog-using-css-and-javascript/

一切正常,除了关闭它的伟大。我不想通过按钮关闭它,我想让用户可以通过单击模式外部的按钮来关闭它,即在其后面的其他页面的背景中。

用户告诉我要补充onclick='overlay()'到覆盖DIV这样<div id="overlay" onclick='overlay()'>

当我尝试通过单击之外,如果它,它的工作原理,关闭模式,但如果你点击的实际模式本身,还会关闭,我不想要它,因为它是一个注册表单。那么有没有什么方法可以通过点击实际模态本身之外来关闭模态?

+0

您可以检查是否点击源自覆盖,然后调用'覆盖()' – Musa

+0

确定,但如何将我检查,其中点击来自何处,我不在JavaScript中很棒。 – Arken

回答

1

试试这个:

$(document).ready(function(){ 
$('#overlay').bind('click', function(event){ 
    if (event.target == $('#overlay').get(0)) 
     overlay(); 
}); 
+0

嗨,对不起,但我加了,它没有做什么,当我试图关闭它,我不知道我在做什么错,感谢您的帮助,虽然 – Arken

+0

是你的模式的内容div'overlay' div?如果是的话,它应该工作。 –

+0

我稍微修改了一下,用你原来的代码和我的'ready()'函数再试一次。 –

0

您将不得不从模态窗口移动叠加层的代码。 将此区分开来,您不会将覆盖图作为窗口的父项,并且点击事件只会在覆盖图上触发。

<div id="overlay"> </div> 
<div id="modalWindow"> 
    <p>Content you want the user to see goes here.</p> 
</div> 
+0

嗨,我刚刚尝试过,并从它下面的覆盖层中移动所有的代码,但所有出现的是半透明覆盖层,没有实际的模态代码本身。 – Arken

+0

'#overlay div' CSS如果将内层div移动到'overlay' div之外,CSS将不起作用。将'#overlay div'重命名为'#modalWindow'。您还必须更改js函数以隐藏模式窗口。 –

+0

嗨,我已经改变了名称,并试图改变JavaScript也关闭它,但它仍然没有显示,我所得到的是重叠显示,但不是所有的内容,任何想法的实际modal_wrapper?感谢您的帮助 – Arken