Как делегировать обработку события не с селектором, а с Jquery объектом?

222
11 мая 2018, 08:16

Нужно обработать событие для динамически добавленного объекта.
Обработка обычно делается так:

$parent.on(events, [selector], [data], handler)

Где:

  • $parent — это статический родительский элемент

  • selector — это селектор для выбора нужного дочернего элемента

Допустим, нужный дочерний элемент, событие на котором нужно обработать, уже хранится в переменной $child:

$parent.on(events, $child, [data], handler)

Так не работает. Как делегировать обработку в таком случае?

Answer 1
$parent.on("event_name", function(event) {
  if (event.target == $child[0]) {
    // ... do something
  }
});
Answer 2

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

var $wrapper = $("#wrapper");
    $inners = $(".inner") || ""
$wrapper.click(function(e){
  if ( $(e.target).hasClass("inner") ){
    alert("Inner click");
  }
})

Вот работающая модель, может пригодится ) https://codepen.io/Valiev/pen/gzvZVJ

READ ALSO
Уменьшить svg картинки пропорционально

Уменьшить svg картинки пропорционально

Нужно по изменению окна браузера уменьшать пропорционально или возвращать в обычное состояние отдельные объекты svgНапишите пример пожалуйста,...

199
При наведении на блок появляется текст

При наведении на блок появляется текст

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

205
Якорь не работает как надо

Якорь не работает как надо

Добрый день не работает якорь если заходить на сайт сразу с ним пример - siteru/#skidka а если я нажимаю на то все поднимается куда нужно

220
Как вставить фрагмент одной страницы в <IFrame/>?

Как вставить фрагмент одной страницы в <IFrame/>?

У меня есть группа файлов jsf

194