С включенным loop ваш свайпер создаёт дубликаты слайдов, чтобы прокрутка была бесконечной. Судя по всему, это происходит после того, как отрабатывает ваш скрипт, открывающий видео, из коммента выше. При создании дубликата из оригинала копируется только разметка, но не обработчики событий.
Первый вариант решения - выполнять ваш скрипт после того, как слайдер смонтируется, в swiper.js есть соответствующий эвент, читайте доки.
Второй вариант - вешать обработчик не на кнопки по отдельности, а на весь слайдер, и проверять в обработчике, что именно нажато. Если нужная кнопка - брать из неё id видео, открывать модал и так далее.