我正在制作一个简单的HTML5音频播放列表(audio.js),它会更改为Wordpress <article ul li>
帖子中的下一首歌曲。因此,我在浏览多个<article>
代码并检索<ul li>
和.next()
上每个代码的.prev()
时遇到了一些麻烦。我开始认为使用这些选择器不是最佳解决方案。
<script>
$(function() {
// Setup the player to autoplay the next track
var a = audiojs.createAll({
trackEnded: function() {
var next = $('article ul li').next();
var title = $('img', this).attr("title");
$("a.songtitle").text(title);
if (!next.length) next = $('article ul li').first();
audio.load($('a', next).attr('data-src'));
audio.play();
}
});
// Load in the first track
var audio = a[0];
first = $('article ul a').attr('data-src');
$('article ul li').first();
audio.load(first);
// Load in a track on click
$('article ul li').click(function(e) {
e.preventDefault();
var title = $('img', this).attr("title");
$("a.songtitle").text(title);
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 = $('article ul li').next();
if (!next.length) next = $('ul li').first();
next.click();
// back arrow
} else if (unicode == 37) {
var title = $('img', this).attr("title");
$("a.songtitle").text(title);
var prev = $('article ul li').prev();
if (!prev.length) prev = $('article ul li').last();
prev.click();
// spacebar
} else if (unicode == 32) {
audio.playPause();
}
})
});
</script>
如何更改此代码以在多个<article ul li>
标签之间切换以跳至下一首/上一首歌?任何帮助将不胜感激!谢谢!
修改
这就是我想要做的。但正如您所看到的那样,它并没有为每个<article ul li>
标签跳过歌曲。 Audio.js会自动查找所有<a>
标记,并获取data-src
属性以加载歌曲。 http://jsfiddle.net/UkrZx/
答案 0 :(得分:0)
$(function() {
// Setup the player to autoplay the next track
var a = audiojs.createAll({
trackEnded: function() {
var next = $('article > ul li.playing').next();
var title = $('img', this).attr("title");
$("a.songtitle").text(title);
if (!next.length) next = $('article > ul li').first();
audio.load($('a', next).attr('data-src'));
audio.play();
}
});
// Load in the first track
var audio = a[0];
first = $('article > ul li a').attr('data-src');
$('article > ul li').first();
audio.load(first);
// Load in a track on click
$('article > ul li').click(function(e) {
e.preventDefault();
var title = $('img', this).attr("title");
$("a.songtitle").text(title);
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 = $('article > ul li.playing').next();
if (!next.length) next = $('article > ul li').first();
next.click();
// back arrow
} else if (unicode == 37) {
var title = $('img', this).attr("title");
$("a.songtitle").text(title);
var prev = $('article > ul li.playing').prev();
if (!prev.length) prev = $('article > ul li').last();
prev.click();
// spacebar
} else if (unicode == 32) {
audio.playPause();
}
})
});
看起来您正在尝试修改THIS SCRIPT,我希望我更了解Wordpress或AUDIO.JS脚本来帮助您。它似乎不想识别父<li>
之外的任何内容,但我可以让它在你的代码中播放第二首歌。祝你好运,我希望这会有所帮助。
编辑次要成就...有一些编辑(和一个更新的小提琴),我可以让它播放两首歌曲,但只能使用左箭头。很奇怪,我知道..但它的进展。
答案 1 :(得分:0)
不知道为什么它不会识别next / prev <article>
元素,但我更改了原始的Wordpress帖子内容,而只是在<li>
元素之间输出帖子。奇怪,但至少它现在有效。
我的代码现在是这样的:http://jsfiddle.net/HxVaj/2/。