首先,我想你生病展示一下我到目前为止....多个HTML5音频行为:一个轨道中的时候请
我在我的HTML结构多<audio>
标签。即时通讯使用的标准技术与<a>
标签
$('.play').on('click',function(e){
e.preventDefault();
var song = $(this).next('audio').get(0);
if(song.paused){
song.play();
}else {
song.pause();
}
});
接下来,我写了一个简单功能的发挥以下轨道时当前播放曲目结束播放的文件...
$('audio').on('ended',function(e){
e.preventDefault();
var $next = $(this).nextAll().eq(1).get(0);
if($next.paused){
$next.play();
}
});
再就是对于视觉UI添加一个亮点类当前播放的曲目多了一些功能...
$('audio').on('playing',function(){
$(this).prev().addClass('highlight')
});
$('audio').on('ended',function(){
$(this).prev().removeClass('highlight')
});
$('audio').on('pause',function(){
$(this).prev().removeClass('highlight')
});
现在我的问题:如果你点击一个以上的轨道,他们将同时播放。我想要当前播放的任何曲目在您点击另一曲目时暂停。
我发现对堆栈类似的担忧类似的帖子,我发现这个功能,遍历所有audio
对象,并暂停他们...
var allAudioEls = $('audio');
function pauseAllAudio() {
allAudioEls.each(function() {
var a = $(this).get(0);
a.pause();
});
}
如果我这样调用的函数(下面3行)...
$('.play').on('click',function(e){
e.preventDefault();
pauseAllAudio();
var song = $(this).next('audio').get(0);
if(song.paused){
song.play();
}else {
song.pause();
}
});
它几乎工程,将暂停正在播放的另一条轨道,并播放一个最近点击的,但是现在你不能暂停当前播放了轨道,多数民众赞成。我希望这是有道理的。林肯定它的某种流量问题,但我是一个初学者...也许我需要一个全新的技术来做到这一点。我认为我在循环通过audio
对象的正确轨道...任何帮助将不胜感激,并像我说我是一个新手。任何详细的解释将更加赞赏。
谢谢!
需要花费的极少量的时间。我自学成才,我爱Stack作为资源。如果你觉得你应该投下这个问题,请告诉我为什么。我真的很想学习jQuery。 – BryanK