jquery - 幻灯片更改时,光滑的 slider 会暂停 youtube 视频

标签 jquery video youtube slider slick.js

我使用 Jquery Slick Slider 创建了一个图像 slider ,它也有 youtube 视频剪辑。当页面加载 youtube 视频设置为 slider 的第一张幻灯片时,它会自动播放并开始播放。我想,当我将 slider 框架更改为下一张幻灯片时,youtube 视频将停止播放。

我查看了其他 stackoverflow 答案,但找不到任何内容。

我试过了-

这是我的 div 结构-

<div id="mainSlider" class="box box-default">
    <div class="sliderItem"><div class="playerID"><iframe width="100%" height="100%" frameborder="0" allowfullscreen="" src="https://www.youtube.com/embed/VIDEO_ID?rel=0&amp;autoplay=1&amp;version=3&amp;loop=1&amp;playlist=VIDEO_ID&amp;enablejsapi=1" id="player"></iframe></div></div>
    <div class="sliderItem"><img src="" /></div>
    <div class="sliderItem"><img src="" /></div>
    <div class="sliderItem"><img src="" /></div>
</div>

我用的是 JS -

$("#mainSlider").slick({
         dots: true,
          autoplay: false,
          autoplaySpeed: 7000,
          speed: 500,
          pauseOnHover: true,
           responsive: [
        {
          breakpoint: 1025,
          settings: {
            arrows: true,
            dots: false
          }
        }
      ]
    })
    .on('afterChange', function( e, slick, currentSlide ) {
          $('.bumper').css('display', 'block');
          playpausevideo($currentSlide.eq(e).data('youtubeplayer'), 'pause')
    });

YouTube JS -

function onYouTubeIframeAPIReady(){ // this function is called automatically when Youtube API is loaded (see: https://developers.google.com/youtube/iframe_api_reference)
jQuery(function($){ // when DOM has loaded
    var $contentdivs = $('.sliderItem').find('div.playerID')
    $contentdivs.each(function(i){ // loop through the content divs
        var $contentdiv = $(this)
        var $youtubeframe = $contentdiv.find('iframe[src*="youtube.com"]:eq(0)') // find Youtube iframe within DIV, if it exists
        if ($youtubeframe.length == 1){
          var player = new YT.Player($youtubeframe.get(0), { // instantiate a new Youtube API player on each Youtube iframe (its DOM object)
            events: {
              'onReady': function(e){e.target._donecheck=true} // indicate when video has done loading
            }
          })
            $contentdiv.data("youtubeplayer", player) // store Youtube API player inside contentdiv object
        }
    })
})
}

function playpausevideo(player, action){
    if (player && player._donecheck === true){
        if (action == "play")
            player.playVideo()
        else if (action == "pause")
            player.pauseVideo()
    }
    <script src="http://www.youtube.com/iframe_api"></script>

此代码无效,youtube 视频不会停止,幻灯片切换时仍在播放。

有什么建议吗?

谢谢

最佳答案

添加序列的答案,即使页面上有多个 slider ,这也将允许 slider 起作用。

$('.mainSlider').on('beforeChange', function(event, slick, currentSlide, nextSlide){
  var current = $(slick.$slides[currentSlide]);
  current.html(current.html());
});

关于jquery - 幻灯片更改时,光滑的 slider 会暂停 youtube 视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34349155/

相关文章:

jQuery 文档准备就绪事件

video - 尽管使用了 avformat_write_header,mpg 中仍缺少 header

video - 在Joomla网站上嵌入YouTube视频

android - 在 Android 中使用 Firebase 在单个 RecyclerView 中获取两个不同的 View

iphone - 有关在 iPhone 上使用 Google GData API - Youtube 的任何示例/教程吗?

python - 使用 python 运行 bash 命令并获取输出

javascript - 使用 JQuery 动态确定点击了哪个链接

javascript - 处理响应数据 PHP

javascript - 如何检查某个html片段是否已经加载?

ios - 视频不在 GMSMarker 上播放