Ik heb voor een simpele edit van een item een div onderin m'n html staan met daarin een form. Klik je op de edit-knop dan gaat de div full venster en het form wordt netjes 'dead center' gepositioneerd. Sluiten/verbergen gaat ook prima met de click() op een .close in het form zelf.
Nu het probleem: ik wil dat klikken buiten het form in de omringende div de boel ook sluit, maar als je in het form zelf klikt moet dat dus niet. Dit is logisch, anders zijn de inputs in dat form niet aan te klikken.
Met jQuery die click() afvangen en kijken welke id of class of object/html aangeklikt wordt om vervolgens de gewenste actie (niets of sluiten) te doen gaat niet goed.
De relevante html, css en jquery:
Varianten op de show en hide zijn de .css('display', 'block/none') en de .click met meerdere comma seperated classes en in de function controleren of de #edit is(':visible'); Ook de #edit:before overlay met jquery targetten bij de click doet niets.
Ook met een not('#edit *') en varianten met > en ~ getest, maar haalt niets uit.
Is het probleem dat ik m'n form in de 'overlay' div genest heb en daardoor de boel niet netjes te sluiten is of speelt het gebrek aan javascript/jquery kennis me nu gewoon parten
Nu het probleem: ik wil dat klikken buiten het form in de omringende div de boel ook sluit, maar als je in het form zelf klikt moet dat dus niet. Dit is logisch, anders zijn de inputs in dat form niet aan te klikken.
Met jQuery die click() afvangen en kijken welke id of class of object/html aangeklikt wordt om vervolgens de gewenste actie (niets of sluiten) te doen gaat niet goed.
De relevante html, css en jquery:
HTML:
1
2
3
4
5
6
7
8
| <span class="edit">Bewerk</span> <div id="edit"> <form> <span class="close">Sluit</span> <input type="text" name="data"> <input type="submit" value="Wijzig"> </form> </div> |
Cascading Stylesheet:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| #edit { display: none; } #edit:before { position: fixed; top: 0; bottom: 0; left: 0; width: 100%; height: 100%; z-index: 50; opacity: 0.5; background-color: #999; content: ''; } #edit form { position: absolute; top: 50%; left: 50%; width: 500; height: 500; margin: -250px 0 0 -250px; z-index: 100; border: 1px solid #000; background-color: #F7F7F7; } |
JavaScript:
1
2
3
4
5
6
| $('.close').click(function() { $('#edit').hide(); }); $('.edit').click(function() { $('#edit').show(); }); |
Varianten op de show en hide zijn de .css('display', 'block/none') en de .click met meerdere comma seperated classes en in de function controleren of de #edit is(':visible'); Ook de #edit:before overlay met jquery targetten bij de click doet niets.
Ook met een not('#edit *') en varianten met > en ~ getest, maar haalt niets uit.
Is het probleem dat ik m'n form in de 'overlay' div genest heb en daardoor de boel niet netjes te sluiten is of speelt het gebrek aan javascript/jquery kennis me nu gewoon parten