jQuery и Audio.js: песня, динамически добавляемая в плейлист, не воспроизводится или не распознается
Я использовал audio.js для создания динамического списка воспроизведения. Когда пользователь нажимает на ссылку в неупорядоченном списке, она добавляется в упорядоченный список (<ol>
), что серверы в плейлисте аудио плееров.
У меня работает jQuery, я добавляю новый элемент списка из списка Un-Ordered в список Ordered. Тем не менее, проигрыватель не воспроизводит вновь добавленную песню при нажатии и не переходит к ней в качестве следующей дорожки.
Аудиоплеер воспроизводит только песни, которые изначально были в его плейлисте при загрузке веб-сайта, но не распознает песни, которые я добавил после загрузки. Любая помощь?
Вот ссылка на пример списка воспроизведения audio.js: http://kolber.github.io/audiojs/demos/test6.html
Вот ссылка на мою версию с песнями, добавленными в jQuery: http://tinyurl.com/kg9clpb
Audio.js Исходный код демо для настройки плеера:
<script>
$(function() {
// Setup the player to autoplay the next track
var a = audiojs.createAll({
trackEnded: function() {
var next = $('ol li.playing').next();
if (!next.length) next = $('ol li').first();
next.addClass('playing').siblings().removeClass('playing');
audio.load($('a', next).attr('data-src'));
audio.play();
}
});
// Load in the first track
var audio = a[0];
first = $('ol a').attr('data-src');
$('ol li').first().addClass('playing');
audio.load(first);
// Load in a track on click
$('ol li').click(function(e) {
e.preventDefault();
$(this).addClass('playing').siblings().removeClass('playing');
audio.load($('a', this).attr('data-src'));
audio.play();
});
// Keyboard shortcuts
$(document).keydown(function(e) {
var unicode = e.charCode ? e.charCode : e.keyCode;
// right arrow
if (unicode == 39) {
var next = $('li.playing').next();
if (!next.length) next = $('ol li').first();
next.click();
// back arrow
} else if (unicode == 37) {
var prev = $('li.playing').prev();
if (!prev.length) prev = $('ol li').last();
prev.click();
// spacebar
} else if (unicode == 32) {
audio.playPause();
}
})
});
</script>
HTML для Aud-oplayer и оба списка:
<audio ></audio>
<h2>Playlist</h2>
<ol id="userPlaylist">
<li><a href="#" data-src="http://kolber.github.io/audiojs/demos/mp3/02-juicy-r.mp3">dead wrong intro</a></li>
<li><a href="#" data-src="http://kolber.github.io/audiojs/demos/mp3/02-juicy-r.mp3">juicy-r</a></li>
<li><a href="#" data-src="http://kolber.github.io/audiojs/demos/mp3/03-its-all-about-the-crystalizabeths.mp3">it's all about the crystalizabeths</a></li>
<li><a href="#" data-src="http://kolber.github.io/audiojs/demos/mp3/04-islands-is-the-limit.mp3">islands is the limit</a></li>
<li><a href="#" data-src="http://kolber.github.io/audiojs/demos/mp3/05-one-more-chance-for-a-heart-to-skip-a-beat.mp3">one more chance for a heart to skip a beat</a></li>
<li><a href="#" data-src="http://kolber.github.io/audiojs/demos/mp3/06-suicidal-fantasy.mp3">suicidal fantasy</a></li>
<li><a href="#" data-src="http://kolber.github.io/audiojs/demos/mp3/07-everyday-shelter.mp3">everyday shelter</a></li>
<li><a href="#" data-src="http://kolber.github.io/audiojs/demos/mp3/08-basic-hypnosis.mp3">basic hypnosis</a></li>
<li><a href="#" data-src="http://kolber.github.io/audiojs/demos/mp3/09-infinite-victory.mp3">infinite victory</a></li>
<li><a href="#" data-src="http://kolber.github.io/audiojs/demos/mp3/10-the-curious-incident-of-big-poppa-in-the-nighttime.mp3">the curious incident of big poppa in the nighttime</a></li>
<li><a href="#" data-src="http://kolber.github.io/audiojs/demos/mp3/11-mo-stars-mo-problems.mp3">mo stars mo problems</a></li>
</ol>
<h3>Songs Not it Playlist - Click to add to Playlist</h3>
<ul id="mainSite">
<li><a href="#" data-src="http://www.jussbuss.tv/testing/sapi/mp3/john-fenton_dive-table.mp3">john-fenton_dive-table</a></li>
</ul>
Мой код для добавления песни из другого списка по клику:
<script>
$("ul#mainSite li").on("click", "a", function(e){
e.preventDefault();
var addLink = $(this).attr('data-src');
$("ol#userPlaylist").append('<li> <a href="#" data-src="'+addLink+'">NEW
SONG</li>');
});
</script>
1 ответ
Если я вас правильно понимаю, ваша проблема в том, что игрок не связан с вашими списками. Так как игрок является SWF-игроком, вы должны были управлять игроком (начать игру).
Волшебство заключается в:
audio.load($('a', next).attr('data-src'));
audio.play();
Полный код:
http://kolber.github.io/audiojs/audiojs/audio.js
Чтобы помочь вам, пожалуйста, прочитайте и ПОНИМАЙТЕ полный код вашей демонстрации (загрузите все и поиграйте с кодом)
http://kolber.github.io/audiojs/demos/test6.html
и вы очень скоро найдете свой ответ.