Ik heb een html-pagina index.html met wat javascript mbv jQuery. In het javascript wordt een class beschreven die een popup op de pagina creeert, daarmee wordt het object settingsPopup gemaakt. De inhoud van de popup staat in een apart bestand settingsPopup.html, deze wordt via load() in de div 'settingsPopup' in de index.html geladen. Ergens op index.html wordt op een link geklikt waardoor DisplayPopup() gaat werken en een popup verschijnt. In settingsPopup.html staat de div met het id "popupClose". In de javascriptcode wordt een click event aangemaakt om de popup weer te sluiten. Dit werkt alleen niet. Ik denk dat dat komt doordat op de moment aan het aanmaken van het click-event, het bestand settingsPopup.html nog helemaal niet is ingeladen en daarom is ook de div met het id 'popupClose' beschikbaar. Iemand een idee hoe ik dit kan oplossen?
index.html
settingsPopup.html
index.html
HTML:
1
2
3
| ... <div id="settingsPopup"></div> ... |
settingsPopup.html
HTML:
1
2
| <a id="popupClose">x</a> allemaal tekst voor in de popup |
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
| function PopupPanel(popupName, button) { var self = this; //Members this.name = popupName; this.button = button; this.status = 0; //0 = disabled, 1 = enabled //Methods function DisplayPopup() { if(self.status==0){ $("#backgroundPopup").css({ "opacity": "0.7" }).fadeIn("slow"); var filename = self.name.substring(1) + ".html"; $(self.name).load(filename); $(self.name).fadeIn("slow"); self.status = 1; } }; function DisablePopup() { if(self.status == 1) { $(self.name).fadeOut("slow"); $("#backgroundPopup").fadeOut("slow"); self.status = 0; } } $(this.button).click(function() { DisplayPopup(); }); $("#popupClose").click(function() { DisablePopup(); }); } settingsPopup = new PopupPanel("#settingsPopup", "#settings"); |