target img в слайдере lightgallery.js - PullRequest
0 голосов
/ 17 мая 2018

Есть ли способ нацелиться на img, показанный в ползунке lightgallery.js?

В этом JS ниже 3 не удается получить простое console.log();:

var $lg = $('#mosaic');
$lg.lightGallery({thumbnail: false, addClass: 'imgGallery'});

$('.imgGallery img').click(function() {
     console.log('click'); // fail
});
$('img.lg-object.lg-image').click(function() {
     console.log('click'); // fail
});
$('div.lg-img-wrap img').click(function() {
     console.log('click'); // fail
});

JSFIDDLE

1 Ответ

0 голосов
/ 17 мая 2018

Элементы img, имеющие событие click, не находятся внутри элемента .imgGallery.Они на самом деле внутри #mosaic.Если вы измените этот селектор на $('#mosaic img'), вы все настроены на него.

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

$('body').click('img.lg-object.lg-image', function(e) {
 console.log('click'); // success
 console.log(this); // body (element to which the event is bound)
 console.log(e.target); // img.lg-object.lg-image (element that received the click)
});
...