Bonjour a tous
Je m'arrache les cheveux sur un bug depuis le début de l'aprem, avant de devenir chauve je vais vous demander votre avis.
Alors, long story short, j'ai une appli web, et de temps en temps un div "modal" apparait. Voila le div en simplifié.
Code :
- <div id="dialog" class="window">
- <a href="#" class='valid'>Valid it</a>
- <a href="#" class='close'>Close it</a>
- </div>
|
Dans mon JS, j'ai une fonction showModal(latlng,overlay) (les attributs latlng et overlay sont des objet de l'API GoogleMaps), qui, encore une fois simplifiée, ressemble a ça :
Code :
- function showModal(overlay, latlng) {
- // Je rend mon div #dialog visible & compagnie
- [...]
- // Maintenant les event liés aux link présents dans #dialog
- $('.window .close').click(function (e) {
- e.preventDefault();
- $('#dialog').hide();
- });
-
- $('.window .valid').click(function(e) {
- $.ajax({
- [...] Appel AJAX en se servant de l'argument 'latlng' de showModal(..)
- });
- $('#dialog').hide();
- });
- }
|
Passons maintenant a mon problème : Je click sur ma carte Gmaps, ce qui lance showModal(latlng, overlay) ; je décide de ne pas validé, je fait clic donc sur Close it, mon div disparait. Tout va bien.
Mais si maintenant je clic quelque part d'autre sur ma carte, et que je clic sur Valid it, BLAM ! Deux appels AJAX, une fois avec le latlng du premier clic, et une fois avec celui du second (légitime lui).
Voila donc mon problème, mon event javascript qui lance l'appel AJAX est toujours la, n'est pas overide, et par conséquent se lance trop de fois. Je ne sais pas comment faire pour empêcher cela.
Merci de votre aide