2013-09-24 147 views
0

我有一個頁面,有多個使用video.js框架的<video>玩家實例。我想在播放其中一個時暫停任何其他播放實例。或者,換個角度來說,在打一個時,我希望所有其他人暫停。暫停其他玩家玩一個

順便說一句:不幸的是,我在一個Wordpress環境中使用它,我不知道video.js元素的id,因爲它是動態創建的。我也有權訪問jquery。

的HTML輸出端看起來像:

<video id="example_video_id_1984815762" class="video-js vjs-default-skin" width="350" height="198" poster="http://example.com/wp-content/uploads/2013/09/filename.jpg" controls preload="none" data-setup="{}"> 
    <source src="http://example.com/wp-content/uploads/2013/09/filename.mp4" type='video/mp4' /> 
</video> 

,我已經試過了,但都無濟於事:

$('.filmWrapper a').click(function(){ 

    var vidId = $(this).find('video').attr('id'); 

    var myPlayer = videojs(vidId); 

    myPlayer.on('play',function(){ 
    this.siblings().pause(); 
    }); 

    return false; 

}); 

我敢肯定,我

  1. 這樣做完全錯了,
  2. 混淆了我的jquery和videojs的東西糟糕。

這應該是一個常用的用法。有人能告訴我它是如何完成的嗎?

回答

1

你可以嘗試獲得基於他們共同的階級首先所有的ID,然後分配事件給他們每個人來控制所有的其他的

東西沿着這些線路(你可能需要調整這個代碼位,但它會給你一個粗略的指導方針如何去做):

var ids, length; 
ids = new Array(); 
jQuery(".video-js").each(function() { 
    ids.push(this.id); 
}); 
length = ids.length; 
for (var i = 0; i < length; i++) { // cycle through all the IDs 
    var otherIDs = ids; 
    videojs(ids[i]).on('play', function() { //the current ID 
    otherIDs.splice(i, 1); //remove the current id from the otherIDs array 
    for (var j = 0; j < length - 1; j++) { //cycle through the otherIDs array 
     videojs(otherIDs[j]).pause(); 
    } 
    }); 
});