将MP3附件添加到jPlayer播放列表时出现问题

时间:2013-04-05 作者:George

我正在尝试使用jplayer插件(带有播放列表插件)获取帖子的mp3附件。我让它为一定数量的附件工作,但无法为任何数量的附件找到动态解决方案。

目前,mp3附件URL和标题被提取并作为属性添加到\'。jp playlist’div.这样就可以通过jquery访问数据,为jplayer设置播放列表。(这可能不是最优雅的解决方案,因此任何关于更好方法的反馈都值得赞赏)

用于在单个中设置jPlayer的代码。php:

<div id="jquery_jplayer_1" class="jp-jplayer"></div>
<div id="jp_container_1" class="jp-audio">
  <div class="jp-type-playlist">
    <div class="jp-gui jp-interface">
      <ul class="jp-controls">
        <li><a href="#" class="jp-previous" tabindex="1">previous</a></li>
        <li><a href="#" class="jp-play" tabindex="1">play</a></li>
        <li><a href="#" class="jp-pause" tabindex="1">pause</a></li>
        <li><a href="#" class="jp-next" tabindex="1">next</a></li>
      </ul>                         
    </div>
    <div class="jp-playlist" data-track-1="exampleurl1.mp3" data-title-1="Track 1" data-track-2="exampleurl2.mp3" data-title-2="Track 2" data-track-3="exampleurl3.mp3" data-title-3="Track 3" >
      <ul>
        <li></li>
      </ul>
    </div> <!-- .jp-playlist -->
  </div> <!-- .jp-type-playlist -->
</div> <!-- #jp_container_1 -->
用于初始化jPlayer和设置播放列表的jQuery代码:

jQuery(document).ready(function($) {

  var myPlaylist = new jPlayerPlaylist({
    jPlayer: "#jquery_jplayer_1",
    cssSelectorAncestor: "#jp_container_1"
    }, [
      { 
        title: $(".jp-playlist").attr("data-title-1"), 
        mp3: $(".jp-playlist").attr("data-track-1") 
      },
      { 
        title: $(".jp-playlist").attr("data-title-2"), 
        mp3: $(".jp-playlist").attr("data-track-2") 
      },
      { 
        title: $(".jp-playlist").attr("data-title-3"), 
        mp3: $(".jp-playlist").attr("data-track-3") 
      }
    ], {
    swfPath: "Jplayer.swf",
    supplied: "mp3"
  });
});                                      
如果有三个mp3附件,这很好用,但我需要使其适用于任何数量的附件。我想解决方案是使用javascript循环来获取所有数据曲目/标题属性,并将它们输出到播放列表对象的数组中,但我没有太大的成功。非常感谢您的帮助!

1 个回复
最合适的回答,由SO网友:Milo 整理而成

看看wp_localize_script 用于将php数据传递到javascript。伪代码示例:

$tracks = array();

foreach( $mp3_attachments as $mp3_attachment ):
    $tracks[] = array(
        \'mp3\' => $mp3_attachment[\'filename\'],
        \'title\' => $mp3_attachment[\'title\']
    );
endforeach;

$wpa_track_data = array( \'tracks\' => $tracks );

wp_enqueue_script( \'wpa_script\', get_template_directory_uri() . \'/js/yourscript.js\' );
wp_localize_script( \'wpa_script\', \'wpa_data\', $wpa_track_data );
然后在你的js中wpa_data.tracks 将包含您的MP3和标题数组。

结束

相关推荐

WordPress and jQuery

我是WordPress中使用jQuery的新手,我正在尝试在一个单独的文件中编写jQuery脚本。设置外部文件的以下两种语法之间有什么区别:第I版jQuery(function() { jQuery(\"#radio\").buttonset(); }); 第二版$(document).ready(function() { $(\"#radio\").buttonset(); }