Вызов Thickbox из файла JS - PullRequest
       12

Вызов Thickbox из файла JS

0 голосов
/ 19 апреля 2009

Привет, я пытаюсь добавить толстую рамку в оверлей в GoogleMap. В моей функции загрузки JQuery я вызываю следующую функцию. Карта работает отлично. Но когда толстая коробка, кажется, не называется. Это линия, которая работает

<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 Ответ

2 голосов
/ 19 апреля 2009

Добавление ссылки, которую вы хотите активировать Thickbox, в DOM после того, как функция Thickbox уже была вызвана. Это потому, что вы создаете ссылку динамически в функции map.openInfoWindowHtml. Вам нужно вызвать функцию Thickbox после того, как эта функция была выполнена.

Беда в том, что я только что посмотрел на документацию Thickbox, и файл Thickbox устанавливается в файле Thickbox.js, как только DOM загружается, что слишком рано для вас. Вы можете попытаться изменить функцию setTimeout следующим образом:

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

Я не могу быть на 100% уверен, что это сработает, но в этом суть проблемы.

...