Показать сообщение отдельно
  #6 (permalink)  
Старый 22.11.2020, 01:12
Новичок на форуме
Отправить личное сообщение для Vladikslav Посмотреть профиль Найти все сообщения от Vladikslav
 
Регистрация: 10.05.2013
Сообщений: 9

Сообщение от 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

Короче, разобрался с этим сам, можете мне карму повысить, а то я что-то в нулях засиделся здесь почему-то

Последний раз редактировалось Vladikslav, 22.11.2020 в 01:15.
Ответить с цитированием