2012-05-03 46 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