Обработка клика по фигуре

Подскажите, как обработать .click или on('click'..) по фигуре ? Фигура добавляется динамически по нажатию на кнопку и имеет такую структуру:

<figure>
 <div class="img_wrapper ">
  <div class="highlight">
   <img src="/img.jpg"> 
  </div>
  <figcaption><p>Caption</p></figcaption>
 </div>
</figure>

Пробовал через $('figure').click, через getElementByTagName, через document ready и т.п. И то ли я что-то делаю неправильно, то ли причина в другом


Ответы (1 шт):

Автор решения: Алексей Шиманский

Надо бы клик вешать не на сам элемент, а на родителя, который не изменяется. Это называется делегирование. Ибо ты пытаешься повесить событие на элемент, которого нет. Логично, что он и не работает.

$('#parent').append(`<figure data-test="5">
 <div class="img_wrapper">
  <div class="highlight">
   <img src="/img.jpg"> 
  </div>
  <figcaption><p>Caption</p></figcaption>
 </div>
</figure>

<figure data-test="6">
 <div class="img_wrapper">
  <div class="highlight">
   <img src="/img.jpg"> 
  </div>
  <figcaption><p>Caption</p></figcaption>
 </div>
</figure>

<figure data-test="7">
 <div class="img_wrapper">
  <div class="highlight">
   <img src="/img.jpg"> 
  </div>
  <figcaption><p>Caption</p></figcaption>
 </div>
</figure>`);

$('#parent').on('click', 'figure', function() {
    alert($(this).data('test'));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script>
<div id="parent">parent</div>

Подробнее http://jquery.page2page.ru/index.php5/On#.D0.9F.D1.80.D1.8F.D0.BC.D0.B0.D1.8F_.D0.B8_.D0.B4.D0.B5.D0.BB.D0.B5.D0.B3.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.BD.D0.B0.D1.8F_.D0.BE.D0.B1.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D0.BA.D0.B0_.28.D0.BF.D0.B0.D1.80.D0.B0.D0.BC.D0.B5.D1.82.D1.80_selector.29

→ Ссылка