@danilr

Как узнать, по какому маркеру был клик?

Есть такой вот блок, в нем мне нужно по клику выцепить атрибут внешнего блока, проблема(вопрос) в том, что я могу кликнуть по любому из внутренних блоков и должен получить атрибут внешнего блока.
Получить надо "data-id" Как это сделать?

<div class="marker-wrapper" data-id="${this.residentials[i].id}">
    <div class="mini-marker-wrapper">
        <div class="mini-marker"></div>
    </div>
    <div class="marker-info-wrapper">
          <div class="marker-title"></div>
         <div class="marker-price">от ${priceMinFormatted} ₽</div>
         <div class="marker-decor"></div>
     </div>
</div>

Это верстка шаблона маркера 2гис, отдельно навешивать на нее обработчики нельзя,
обработка клика делается вот так:

this.markers.on('click', function(e) {  //при click на маркер
        console.log(e.originalEvent.target.getAttribute('data-id'));
        console.log(e);
 }.bind(this));
  • Вопрос задан
  • 80 просмотров
Решения вопроса 1
0xD34F
@0xD34F
- e.originalEvent.target.getAttribute('data-id')
+ e.originalEvent.target.closest('[data-id]').dataset.id

UPD.

Это верстка шаблона маркера 2гис, отдельно навешивать на нее обработчики нельзя

"Верстка шаблона маркера" - в смысле, DG.divIcon? Да, туда нельзя. А на сам маркер - можно:

const marker = DG.marker(...
marker.on('click', onMarkerClick);

function onMarkerClick(e) {
  // ...
}

UPD. Вынесено из комментариев:

Я вообще сделал это чтобы как то понять на какой маркер кликнули

Ну да, вешайте обработчик клика на маркер, смотрите у события свойство target.

Или, возможен другой вариант. Как я понимаю, this.markers - это DG.featureGroup. Оставляете общий обработчик клика, смотрите у события свойство eventTargets, это массив, внутри будет кликнутый маркер.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы