2014-11-05 216 views
1

我有一個簡單的模態窗口,裏面有一個視頻(使用Video.js)。我打開它並關閉它使用jquery點擊。如果用戶在任何時候關閉窗口,我都需要視頻暫停/停止。出於某種原因,我無法讓它工作。我一直在尋找一段時間,並得到相同的答案,所以它應該很簡單,但有些事情導致它無法正常工作。任何幫助,將不勝感激!暫停播放video.js播放器

<a href="#" class="video1"></a> 

<div class="modal" id="video1" style="display:none;"> 
    <div class="modalBg"></div> 
    <div class="videoContainer"> 
     <div class="closeBtn"></div> 
     <div class="video"> 
      <video id="vid1" class="video-js vjs-default-skin" controls preload="none" width="auto" height="auto" data-setup="{}"> 
       <source src="video/video.mp4" type='video/mp4' /> 
      </video> 
     </div> 
    </div> 
</div> 

<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script> 
<script> 
    $(document).ready(function() { 

     $(".closeBtn").click(function() { 
      $(".modal").hide(); 
      $("#vid1").player().pause(); 
     }); 

     $(".video1").click(function() { 
      $("#video1").show(); 
     }); 

     $('video').on('ended',function(){ 
      $(".modal").hide(); 
     }); 
    }); 
</script> 

我已經在頭部包含了所有必需的video.js文件,不要認爲在這裏包含這些引用很重要。

+0

我可以得到,如果我只是用$它的工作( 「視頻」)。得到(0).pause();但如果我引用特定的視頻ID則不行。任何想法爲什麼? – user3022992 2014-11-05 19:35:20

回答

2

想通了......

這個工程的暫停所有視頻:

$('video').each(function() { 
    $(this).get(0).pause(); 
}); 

這種方式更適合播放特定的視頻:

$("#video1 video").get(0).play(); 
0

的Video.js取代了原來的video包含播放器技術,海報元素,控件等的div元素。播放器內的播放器技術元素可以是視頻元素,但也可以是在使用Flash後備的情況下的對象。在任何一種情況下,科技元素本身都不會有原始的id

您的解決方案針對新的視頻元素,但這隻適用於已使用HTML技術的地方。相反,使用的Video.js的API暫停視頻:

$.each(videojs.players, function(index, player) { 
    player.pause(); 
}); 

對於單個視頻:

videojs('video1').pause(); 
0
$("#my-video")[0].player.pause(); 
+1

回答問題時,最好詳細解釋一下,以便該網站的其他用戶更容易理解它。 – Tristan 2015-12-04 22:27:28