Клуб API Карт

Как можно получить balloonContent(DOM элемент) из click event на Placemark

Пост в архиве.

Добрый день, интересует следующий вопрос. У меня есть кастомный PlaceMark со своей версткой.

Пытаясь навесить событие 

placemark.events.add('click', fuction(e){

 // обнаружил, что есть возможность получить balloonContent или пользовательские аттрибуты (В доках по мне про это написано слишком скудно и тяжело

e.get('target')['properties'].get('balloonContent'))

});


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


На самом деле есть еще и второй вопрос. Можно-ли, как-нибудь, навесить событие на элементы, которые находятся внутри balloon. Помимо вставки атрибута onclick=""

3 комментария

Надо использовать обработчики событий, устанавливая их через собственный макет содержимого балуна (метод build)

См. Документацию на ymaps.templateLayoutFactory

Константин Забродин
27 января 2016, 22:34

Подругому никак ? Кнопка close как-раз так и работает (в примерах ваших тоже), но подстраивать layout под один случай для content не очень хорошо. Все-таки я хочу, чтобы в определенных балунах была какая-то кнопка. А ваше решение предполагает, что мой layout должен предусматривать и обрабатывать данную кнопку.

 

Попробую переформулировать. У меня есть много разных yandex карт на сайте. У них у всех одинаковый layout. Но вот в одной карте, на балуне появилась кнопка, которая должна обрабатываться. Изменять код генерации и build для layout не хочется

Можно использовать вложенные макеты по условию.

{% if options.hasButton %}

  {% include options.myBalloonButtonLayout %}

{% endif %}

 

Соответственно в myBalloonButtonLayout в методе build будет навешиваться обработчик события на кнопку