0

我有一个使用flickity carousel 库创建的视频轮播,可以在 codepen 上看到。我想要发生的是,当用户滑动轮播时,所选幻灯片停止播放,然后采用所选中间位置的幻灯片开始播放。现在,使用 jQuery,我得到了最初播放的选定幻灯片:

$(document).ready(function () {
       var $partnerSlides = $('.partner-slides').flickity();

       function onLoadeddata(event) {
           var cell = $partnerSlides.flickity('getParentCell', event.target);
                $partnerSlides.flickity('cellSizeChange', cell && cell.element);
       }

       $partnerSlides.find('.slide video').each(function (i, video) {
           video.pause();
           $(video).on('durationchange', onLoadeddata);
       });

       $partnerSlides.find('.slide.is-selected video').each(function (i, video) {
           video.play();
           $(video).on('durationchange', onLoadeddata);
       });

});

但是当幻灯片切换位置时,​​选定的幻灯片只是移动位置并继续播放,而新幻灯片处于中间位置并且不播放。

每次轮播滑动时有没有办法更新这些功能?

4

1 回答 1

1

我实际上想出了我认为最好的方法。旋转木马有一个事件,'settle.flickity'每次旋转木马在滑动或自动播放后稳定时都会触发(有关flickity事件的更多信息可以在 flickity 上阅读。因此,此代码:

var $gallery = $('.partner-slides').flickity(); //this is the carousel

  $gallery.on('settle.flickity', function () {
      console.log('Flickity settled at ' + flkty.selectedIndex);

      $gallery.find('.slide video').each(function (i, video) {
          video.pause();
          $(video).on('loadeddata', onLoadeddata);
      });

      $gallery.find('.slide.is-selected video').each(function (i, video) {
          video.play();
          $(video).on('loadeddata', onLoadeddata);
      });

  });

将播放选定的视频并暂停任何未选定的视频。

于 2016-08-11T13:56:32.137 回答