2015-07-21 3 views
1

Fiddle HereAppying Javascript динамически видео внутри slick.js Slider

Можно ли иметь JavaScript, что делает паузу слайд, содержащий видео для этого видео, чтобы играть до конца на конкретный слайд #N вместо применить к любому слайду, содержащий a <video>?

настоящее время у меня этот код, чтобы приостановить слайд, когда он достигает # 5 для этого примера:

  $('.sliderMain').on('afterChange', function(event, slick, currentSlide){ 
      if (currentSlide == 5) { 
      $('.sliderMain').slick('slickPause'); 
      theVideo.play(); 

И этот код, чтобы возобновить слайд когда видео завершает воспроизведение:

document.getElementById('theVideo').addEventListener('ended',myHandler,false); 
       function myHandler(e) { 
       $('.sliderMain').slick('slickPlay'); 
       } 
      } 
      }); 

Что Я хотел бы сделать, это включить больше видео в мой слайдер и сделать паузу на каждом из них, чтобы воспроизводить видео, а не только на конкретном слайде, как это делается здесь:

if (currentSlide == 5) { 

В слайде 6 есть видео, но не включено в приведенный выше код, например. Я бы предпочел обнаружить код, если на слайде есть класс видео. Это продолжение this question.

+0

не уверен о требовании. Вы можете объяснить немного больше? –

+0

Я обновил свой вопрос. Спасибо за вашу помощь. –

+0

Четко объясните требование, пожалуйста ... ваш пример кода выглядит неполным –

ответ

0

вместо

if (currentSlide == 5) 

вы можете добавить порядковый класс по каждому из слайдов, и проверить, что находится внутри в этом случае. HTML, будет выглядеть следующим образом:

  <div class="slide1"><img src="http://placehold.it/900x500"></div> 
     <div class="slide2"><img src="http://placehold.it/900x500"></div> 
     <div class="slide3"><img src="http://placehold.it/900x500"></div> 
     <div class="slide4"><img src="http://placehold.it/900x500"></div> 
     <div class="slide5"><img src="http://placehold.it/900x500"></div> 

     <div class="slide6" id="slide-video"> 
      <video width="900px" height="500px" class="theVideo"> 
       <source src="http://vjs.zencdn.net/v/oceans.mp4" /> 
      </video> 

, например, вы будете делать:

  $('.sliderMain').on('afterChange', function(event, slick, currentSlide){ 
      if ($('.slide'+currentSlide+ ' video').length != 0){ 
      $('.sliderMain').slick('slickPause'); 
      theVideo.play(); 
      } 
     }); 

Вы будете, вероятно, то, если у Вас есть видео узла в текущем слайде.

надеюсь, что это поможет

+0

Я только что отредактировал свой ответ, который может быть более полным. –

+0

Большое спасибо за помощь Николаса! Я попытался реализовать это решение, но считаю, что он не обнаруживает, что тег видео теперь приостанавливает слайдер. Я обновил свою скрипку здесь с вашим обновлением. [Fiddle] (https://jsfiddle.net/38oj9xrd/9/) –

+0

вы забыли пространство перед видео в селекторе $ ('. Slide' + currentSlide + 'video') –