【发布时间】:2013-07-16 00:40:57
【问题描述】:
我正在制作一个简单的 HTML5 音频播放列表 (audio.js),它会更改为 Wordpress <article ul li> 帖子中的下一首歌曲。所以我在遍历多个<article> 标签并检索.next() 和.prev() 上每个标签的<ul li> 时遇到了一些麻烦。我开始认为使用这些选择器不是最好的解决方案。
<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/
【问题讨论】:
-
为什么不创建一个数组然后迭代它而不是实际的 DOM?
-
请进一步解释,我完全不会在这里。感谢您的耐心等待。
-
首先,并不是每个人都熟悉 Wordpress 文章的样子,更不用说您的歌曲列表是如何放置在其中的。那么,用一些有效的 HTML 创建一个 jsFiddle 怎么样?
-
好的,谢谢你的建议!也更新了我原来的帖子。这就是我想要做的,但正如你所看到的,它们不会在
元素之间切换。 Audio.js 会自动查找所有 标签并获取“data-src”属性来加载歌曲。 jsfiddle.net/UkrZx -
那么,你是说它只搜索一个
<article ui li>标签?
标签: jquery html audio html5-audio tree-traversal