Сообщение от Nexus
|
Vladikslav, Честно говоря не дочитал ваше сообщение, т.к. ответ на вопрос стал ясен после ознакомления с макетом и вашим кодом.
Потому что вы вешаете слушатель события на существующие в данный момент элементы.
Подгружаемые элементы появятся только после нажатия пользователем на кнопку, ваш код к этому моменту уже отработает.
Эту проблему можно решить делегированием слушателя события ближайшему общему родителю для будущих и уже существующих элементов.
Гуглите «js event delegation».
|
Спасибо за разъяснение, зря не дочитали до конца.
Цитата:
|
ЗЫ: делегирование не подходит мне, так как я на реальном проекте использую сторонние библиотеки, которые ни хрена не отрабатывают события при таком раскладе.
|
Я так собственно и думал как вы и описали, с делегированием предварительно тестировал и это действительно работает. Меня сбило с толку другое. Просто я для галереи изображений использовал
Fullscreen Lightbox, а там JS аглифицирован и в него не залезть. Но RTFM как обычно рулит
Залез в их доку а там о чудо:
Цитата:
|
After adding new <a> tags to detect new lightboxes or update existing ones use global refreshFsLightbox() function.
|
const a = document.createElement('a');
a.setAttribute('data-fslightbox', 'gallery');
a.setAttribute('href', 'images/2.jpg');
document.body.appendChild(a);
refreshFsLightbox();
Магия!!! Ребята позаботились об этом!
https://fslightbox.com/javascript/do...use#refreshing
Короче, разобрался с этим сам, можете мне карму повысить, а то я что-то в нулях засиделся здесь почему-то