Клуб API Карт

Обработчик JavaScript по содержанию маркера

truetug
7 сентября 2009, 20:56

В контенте маркера (placemark) нужно навесить на ссылки некий обработчик JavaScript. Если говорить конкретно, то лайтбокс. Проблема в том, что содержание маркера доступно только после клика по нему.

Каким образом будет правильнее решить данную задачу? Сейчас у меня есть общий скрипт, который после загрузки DOM ищет все ссылки с определенным rel и вешается на них.

3 комментария
Подписаться на комментарии к посту
Вам нужно создать обработчик события Click у метки.
var placemark = new YMaps.Placemark(map.getCenter());
YMaps.Events.observe(placemark, placemark.Events.Click, function (
) {
    // Действия над меткой
});

Подробнее об обработчиках событиях здесь:
http://api.yandex.ru/maps/jsapi/doc/dg/concepts/map_events_listeners.xml
Пока что так и делаю, только вешаю не на Click, а на OpenBalloon, но вызывает некоторые сомнения, ведь событие происходит каждый раз при клике/открытии метки, думал нельзя ли как-то более элегантно.
Извините, неправильно Вас понял. Думал, что Вы имеет ввиду содержимое значка метки.

Вы задали некоторый контент в балуне, в котором присутствуют ссылки, при клике на которых необходимо выполнять какие-то действия.

Можно сделать так:
var marker = new YMaps.Placemark(map.getCenter()),
    content =  YMaps.jQuery("В тексте встречаются ссылки.Ссылок может быть несколько.")
                    .find("a")
                        .bind("click", function () {
                            alert("click");
                        })
                    .end()

marker.setBalloonContent(content[0]);

map.addOverlay(marker);
Т. к. скорее всего у Вас будет несколько меток, то их лучше добавлять в группу, а потом с помощью метода forEach() навесить обработчики на ссылки в контенте балуна.