如何实现多实例jplayers

use*_*342 5 javascript jquery jplayer

如果之前有人使用过jplayer,我需要帮助解决这个问题.

我有多个jplayers,每个玩家都想要播放自己的音频文件.但它并没有这样做,如果我玩一个jplayer,然后所有的jplayers播放,所有播放来自所选jplayers的一个音频文件.事实上,如果我在一个jplayer中使用控件,它也会控制所有其他jplayers.

所以我试图实现一个多实例jplayers,其信息来自于:

http://www.jplayer.org/latest/demo-03/

但我真的很难实现这个,所以我的问题是有人可以帮助我完成这个实现,以便jplayers工作应该做,而jplayer只控制自己的播放器而不影响其他jplayers?

下面是我目前的javascript代码(查看源代码):

<script type="text/javascript">   
    $(document).ready(function(){
  $("#jquery_jplayer_1-72-0").jPlayer({
    ready: function () {
      $(this).jPlayer("setMedia", {
        mp3: "AudioFiles/Kalimba.mp3"
      });
    },
    play: function() { // To avoid both jPlayers playing together.
      $(this).jPlayer("pauseOthers");
   },
    solution:"flash,html",
    swfPath: "jquery",
    supplied: "mp3"
  });
}); 
</script>
Run Code Online (Sandbox Code Playgroud)

更新:

实际代码:

如果没有音频文件,则为每个音频文件显示空白,显示音频播放器.我也包括了html控件,不确定是否需要,但发布它以防万一

        //start:procedure audio
        $aud_result = '';
        if(empty($arrAudioFile[$key])){
          $aud_result = '&nbsp;';
        }else{

$j = 0;
foreach ($arrAudioFile[$key] as $a) { 

        $info = pathinfo('AudioFiles/'.$a); 
?>

<script type="text/javascript">   
    $(document).ready(function(){

$("#jquery_jplayer_1-<?php echo $key.'-'.$j; ?>").jPlayer({
    ready: function () {
      $(this).jPlayer("setMedia", {
        <?php echo $info['extension'];?>: "<?php echo "AudioFiles/".$a; ?>"
      });
      $(this).bind($.jPlayer.event.play, function() { 
          $(this).jPlayer("pauseOthers");
        });
    },
    solution:"flash,html",
    swfPath: "jquery",
    supplied: "<?php echo $info['extension'];?>"
});
}); 
</script>
  <div id="jquery_jplayer_1-<?php echo $key.'-'.$j; ?>" class="jp-jplayer"></div>
  <div id="jp_container_1" class="jp-audio">
    <div class="jp-type-single">
      <div class="jp-gui jp-interface">
        <ul class="jp-controls">
          <li><a href="javascript:;" class="jp-play" tabindex="1">play</a></li>
          <li><a href="javascript:;" class="jp-pause" tabindex="1">pause</a></li>
          <li><a href="javascript:;" class="jp-stop" tabindex="1">stop</a></li>
          <li><a href="javascript:;" class="jp-mute" tabindex="1" title="mute">mute</a></li>
          <li><a href="javascript:;" class="jp-unmute" tabindex="1" title="unmute">unmute</a></li>
          <li><a href="javascript:;" class="jp-volume-max" tabindex="1" title="max volume">max volume</a></li>
        </ul>
        <div class="jp-progress">
          <div class="jp-seek-bar">
            <div class="jp-play-bar"></div>
          </div>
        </div>
        <div class="jp-volume-bar">
          <div class="jp-volume-bar-value"></div>
        </div>
        <div class="jp-time-holder">
          <div class="jp-current-time"></div>
          <div class="jp-duration"></div>
          <ul class="jp-toggles">
            <li><a href="javascript:;" class="jp-repeat" tabindex="1" title="repeat">repeat</a></li>
            <li><a href="javascript:;" class="jp-repeat-off" tabindex="1" title="repeat off">repeat off</a></li>
          </ul>
        </div>
      </div>
    </div>
  </div>
<?php $j++; 
}

}
//end:procedure audio
?>
Run Code Online (Sandbox Code Playgroud)

Alp*_*ale 8

你可以创建一个function并传递这样的参数(file and player id)来在同一页面上创建不同的玩家而不会产生任何冲突:

function js_audioPlayer(file,location) {
    jQuery("#jquery_jplayer_" + location).jPlayer( {
        ready: function () {
          jQuery(this).jPlayer("setMedia", {
        mp3: file
          });
        },
        cssSelectorAncestor: "#jp_interface_" + location,
        swfPath: "/swf"
    });
        return;
}
Run Code Online (Sandbox Code Playgroud)

在此示例中,文件和位置变量被传递到包装函数,然后构造播放器.

然后js_audioPlayer()像你想要的那样多次运行javascript函数:

js_audioPlayer('file1.mp3',1); //Player 1
js_audioPlayer('file2.mp3',2); //Player 2
js_audioPlayer('file3.mp3',3); //Player 3
Run Code Online (Sandbox Code Playgroud)

使用ID创建Player DIV:

jquery_jplayer_1 
jquery_jplayer_2
jquery_jplayer_3
Run Code Online (Sandbox Code Playgroud)

和具有ID的接口DIV:

jp_interface_1
jp_interface_2
jp_interface_3
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.

有关更多详细信息,请访问:http://www.nightbluefruit.com/blog/2011/08/multiple-jplayers-on-the-same-page/

  • 很好的答案,但在技术上准确地说这会动态创建div; 相反,它从HTML中的现有div动态创建jPlayer实例.当然,可以基于模板动态创建div. (2认同)