Клуб API Карт

Как назначить события на открытие баллуна?

ddvhouse
25 октября 2010, 09:40

У меня в баллуне есть несколько кнопок/ссылок, которые яваскриптом будут обрабатываться.

Если через jQuery.live() им просто действие назначить, до или после вывода карты, то ничего не происходит.

Думал попробовать назначать действие при создании этих илементов на странице, то есть при открытие баллуна, но не нашел такое событие. Оно есть?

3 комментария
Подписаться на комментарии к посту
да, некоторые весчи делаются не совсем удобно и быстро :(
лично я не знаю способа кроме реализации своего balloonContentStyle


var s = new YMaps.Style();
s.balloonContentStyle={template :ballon_template}
...
ballon_template = new YMaps.LayoutTemplate(MyBalloonLayout);   
.....
// Класс для создания макета для содержимого балуна
        function MyBalloonLayout (context, map, owner) {
            this.balloon = $("");
            this.context = context;
        }

        MyBalloonLayout.prototype = {
           // Вызывается при открытии балуна
            onAddToParent : function (parentNode) {
                this.balloon.appendTo(parentNode);
                this_balloon_template =  this.balloon;
                this.update();
            },

            // Вызывается при закрытии балуна
            onRemoveFromParent : function () {
                this.balloon.remove();
            },

            // Обновление содержимого балуна
            update : function () {
                // Получаем стиль метки
                this.balloon.html(this.context.tiliObj.getBallonHtml());
                var _this=this;
                setTimeout(function(){_this.context.tiliObj.jquery(_this.balloon);},1);
            }
        }


Есть два варианта решения данной проблемы: 

Использовать jQuery.live, передав опцию propagateEvents со значением true в конструктор карты ( http://api.yandex.ru/maps/jsapi/doc/ref/reference/map.xml#constructor ).

Либо подписаться на событие BalloonOpen карты, например:
YMaps.Events.observe(map, map.Events.BalloonOpen, function(){
    YMaps.jQuery('#button').bind('click', function(){ alert('Click'); });
});
О! Вот это событие и искал! Спасибо!