从js文件调用thickbox

时间:2009-04-19 09:47:06

标签: jquery thickbox

您好我正在尝试将粗框添加到googlemaps中的叠加层。在我的JQuery onload函数上,我调用以下函数。地图工作正常。但是当厚盒子似乎没有被召唤时。这是行的工作

<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();
    }

1 个答案:

答案 0 :(得分:2)

在调用thickbox函数后,将要激活thickbox的链接添加到DOM。这是因为您在map.openInfoWindowHtml函数中动态创建链接。执行此函数后,需要调用thickbox函数。

麻烦的是,我只是看了一下厚箱文档,并且只要DOM加载了,就会在thickbox.js文件中设置thickbox,这对你来说太早了。您可以尝试将setTimeout函数更改为:

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

我无法100%确定这会奏效,但这是问题的症结所在。