2009-04-19 34 views
0

こんにちは、厚いボックスをgooglemapsのオーバーレイに追加しようとしています。私のJQueryのonload関数で私は次の関数を呼び出します。マップは正常に動作します。しかし、厚い箱が呼び出されたように見えないとき。これはjsファイルからthickboxを呼び出す

<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> 

全体の機能

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

あなたのサンプルソースコード – pocheptsov

+0

を明確にしてください、私のポストとちょっと混乱しました。私はそれを更新しました:) – frosty

答えて

2

あなたは、あなたがThickBoxの関数がすでに呼び出された後にDOMにThickBoxのを有効にするリンクを追加することを働くんラインです。これは、map.openInfoWindowHtml関数内でリンクを動的に作成するためです。この関数が実行された後、thickbox関数を呼び出す必要があります。

困っています。私はちょうどthickboxを見ています.DOMsとthickboxはDOMがあなたのためにすぐに読み込まれるとすぐにthickbox.jsファイル内に設定されます。あなたはこれにsetTimeout関数を変更しようとすることができます:

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

私はこれが動作する100%必ずカントが、これが問題の核心です。

+0

あなたは絶対に正しいです。新しく作成されたthickbox要素は、tb_init関数で初期化する必要があります。彼がコードに他の問題がなければ、これがうまくいかない理由はありません。 – KyleFarris

関連する問題