私は、同じページに jPlayer の多くのインスタンス (90) がある音楽コンテスト サイトに取り組んでいます。プレーヤーは機能しますが、残念ながら、曲をロードして再生する前に 5 秒から 30 秒待たなければなりません。
これは、各プレーヤーの jQuery コードです。
$("#jquery_jplayer_2").jPlayer({
ready: function () {
$(this).jPlayer("setMedia", {
m4a: "url/contest/sounds/radioacoustik-rita.m4a",
ogg: "url/contest/sounds/radioacoustik-rita.ogg"
});
},
play: function() { // To avoid both jPlayers playing together.
$(this).jPlayer("pauseOthers");
},
swfPath: "url/contest/js/Jplayer.swf",
supplied: "m4a, ogg",
solution: "html, flash",
preload: 'metadata',
cssSelectorAncestor: "#jp_container_2",
wmode: "window"
});
このコードを単純化して、すべての曲をより速くロードできるようにする方法はありますか?
編集
わかりましたので、いくつかのパラメーターを変数に渡すことでコードを簡素化しようとします:
$(document).ready(function(){
$(".lecteur").each(function(i){
var lecteurNum = $(this).addClass("" + (i+1));
}); //loop through audio and assign a unique class for each
var wrapPlayer = $(".wrap-player");
var classLecteur = wrapPlayer.parent().attr('class').split(' ')[1];
var newPlayerId = "jquery_jplayer_" + classLecteur; // create id jquery_player
var jpContainerId = "#jp_container_" + classLecteur; // create id for jp-container
var songPath = wrapPlayer.attr("rel"); // get url of current sound
$("#" + newPlayerId).jPlayer({
ready: function () {
$(this).jPlayer("setMedia", {
m4a: "http://www.url.com/" + songPath + ".m4a",
oga: "http://www.url.com/" + songPath + ".ogg",
});
},
play: function() { // To avoid both jPlayers playing together.
$(this).jPlayer("pauseOthers");
},
swfPath: "http://www.url.com/contest/js/Jplayer.swf",
solution: "html, flash",
supplied: "m4a, oga",
cssSelectorAncestor: "",
wmode: "window"
});
});
動作しているように見えますが、すべてのインスタンスが同じトラック (最初のトラック) を一緒に再生します。解決策はありますか?