jquery - 滑动滑块仅在更改一次后播放 HTML5 视频
问题描述
我有一个带有图像和 HTML5 视频的非自动播放光滑滑块。如果当前幻灯片是视频,我的目标是播放视频。
如果用户滑动到下一张幻灯片,则应暂停当前播放的视频。
如果下一张幻灯片是视频,则该视频应开始播放。
我的以下代码有效,但仅适用于滑块中的第一个视频。以下所有视频似乎都忽略了播放功能,即使控制台日志是正确的。
// PLAY IF FIRST SLIDE IS VIDEO
$('.bs-swiper').on('init', function(event, slick){
if ($('.slick-current .bs-item figure').hasClass('bs-video')) {
$('video.bs-media')[0].play();
console.log('play if first slide is a video!');
}
});
// PLAY/PAUSE IF VIDEO
$('.bs-swiper').on('afterChange', function(event, slick, currentSlide, nextSlide){
if ($('.slick-current .bs-item figure').hasClass('bs-video')) {
$('video.bs-media')[0].play();
console.log('play this video slide!');
}
});
$('.bs-swiper').on('beforeChange', function(event, slick, currentSlide, nextSlide){
if ($('.slick-current .bs-item figure').hasClass('bs-video')) {
$('video.bs-media')[0].pause();
console.log('pause this video slide!');
}
});
由于我不是 javascript-pro,如果有人可以帮助调整我的代码,那就太好了,所以如果滑块中的每个视频元素都是当前幻灯片,它就会被播放。现在,只播放滑块中的第一个视频。即使控制台日志正确触发,滑块中的所有其他视频也不会开始。
非常感谢您提前提供的帮助!
解决方案
我意识到我还必须像这样将“.slick-current”类添加到视频对象中 $('.slick-current video.bs-media')[0].play(); - 现在所有视频幻灯片在“可见”时开始播放,不在时暂停。呜呼!
推荐阅读
- php - 具有多个层和属性的 SOAP 客户端
- javascript - 为什么javascript不能与https一起使用
- java - 如何根据 Android/Java 中的特定开始/结束编号正确生成随机整数?
- java - 在 android studio 中:如何创建两个带有引用的表?
- c# - 强制关闭后如何重用套接字?
- html - 为什么,如果我应用 display inline-block 属性,我的 HTML 元素是从底部开始的?
- excel - 如何在 VBA 公式中包含数据输入“控件”?
- javascript - 如何使我的光线投射器仅在与可见对象/实体相交时工作?
- javascript - 在没有 jQuery 的情况下将对象存储在数据属性中
- r - 如何从R中的列表中过滤唯一值