2009-04-19 5 views
0

Salut, j'essaie d'ajouter une boîte épaisse à une superposition dans googlemaps. Sur ma fonction JQuery onload j'appelle la fonction suivante. La carte fonctionne bien. Mais quand la boîte épaisse ne semble pas être appelée. Ceci est la ligne qui ne fonctionneAppel de thickbox à partir d'un fichier js

<a href="test.html?keepThis=true&TB_iframe=true&height=250&width=400" title="add a caption to title attribute/or leave blank" class="thickbox">Example 1</a> 

La fonction entière

function load(lat, lng, zlevel, userKey, state) { 

     map = new GMap2(document.getElementById("map")); 
     map.disableDoubleClickZoom(); 
     map.setCenter(new GLatLng(lat, lng), zlevel); 

     if (state) { 

      dsp = true; 

      map.addControl(new GLargeMapControl()); 
      GEvent.addListener(map, "click", function(overlay, latlng) { 

       var zoom = map.getZoom(); 
       var display = '<h5 class="header-flag">Flag</h5><p class="maptext"><a href="#" onclick="javascript:openOverlay(' + latlng.lat() + ',' + latlng.lng() + ',' + zoom + ');">Click here</a> to enter your comment - 
<a href="test.html?keepThis=true&TB_iframe=true&height=250&width=400" title="add a caption to title attribute/or leave blank" class="thickbox">Example 1</a></p>'; 

       setTimeout(function() { map.openInfoWindowHtml(latlng, display, { maxWidth: 200 }); }, 0); 
      }); 
     } else { 


     } 

     mgr = new MarkerManager(map); 
     loadMarkers(userKey); 
     mgr.refresh(); 
    } 
+0

s'il vous plaît préciser votre exemple code source – pocheptsov

+0

ainsi, fait un peu de bordel avec mon poste. Je l'ai mis à jour :) – frosty

Répondre

2

Votre ajout du lien que vous souhaitez activer le thickbox au DOM après la fonction thickbox a déjà été appelé. C'est parce que vous créez dynamiquement le lien dans la fonction map.openInfoWindowHtml. Vous devez appeler la fonction thickbox après que cette fonction a été exécutée.

Problème est que je viens de regarder les documents thickbox et thickbox est mis en place dans le fichier thickbox.js dès que les charges DOM qui est trop tôt pour vous. Vous pouvez essayer de modifier la fonction setTimeout à ceci:

setTimeout(function() { map.openInfoWindowHtml(latlng, display, { maxWidth: 200 }); tb_init('a.thickbox'); }, 0); 

Je ne peux pas être à 100% sûr que cela fonctionnera, mais c'est le nœud du problème.

+0

Vous avez absolument raison. L'élément thickbox nouvellement créé doit être initialisé avec la fonction tb_init. Il n'y a aucune raison que cela ne fonctionne pas à moins qu'il/elle ait d'autres problèmes dans son code. – KyleFarris

Questions connexes