Задать вопрос

Почему некорректно работают события в слайдере swiper?

https://iwyse.github.io/Zainoo/
Если загрузить страницу впервые и начать смотреть с 3 слайдера ( то есть листнуть влево чтобы было 3\3) то не работает кнопка watch video. На ней не висит обработчик событий. Почему так ? И как сделать так чтобы EVENT весел на всех слайдерах ВСЕГДА ?
Если листать и нажимать слайдеры по порядку 1 потом 2 потом 3 то все корректно, но на 4 event опять пропадает.
  • Вопрос задан
  • 815 просмотров
Подписаться 1 Сложный 2 комментария
Решения вопроса 1
@cheeroque
С включенным loop ваш свайпер создаёт дубликаты слайдов, чтобы прокрутка была бесконечной. Судя по всему, это происходит после того, как отрабатывает ваш скрипт, открывающий видео, из коммента выше. При создании дубликата из оригинала копируется только разметка, но не обработчики событий.

Первый вариант решения - выполнять ваш скрипт после того, как слайдер смонтируется, в swiper.js есть соответствующий эвент, читайте доки.

Второй вариант - вешать обработчик не на кнопки по отдельности, а на весь слайдер, и проверять в обработчике, что именно нажато. Если нужная кнопка - брать из неё id видео, открывать модал и так далее.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ShadowOfCasper
@ShadowOfCasper
Middle User Interface Web Developer
Для этого нужно делегировать обработку события не самим слайдам, а врапперу. В начале обработчика убедиться что в e.path есть слайд и он родитель target ноды или сама target нода
Дублирование дерева в списке слайдов не инициирует новые ивенты на новых слайдах. В этом суть проблемы
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы