I have several HTML5 audio elements per page and I use jQuery to play and pause them. Play and pause functions work properly, but tracks can play at the same time.
How can I rewrite this code to play only one song at a time? That is .. if you play and you click on another, pause the previous one and play the last click.
Thanks!
HTML:
<div id="music_right"> <div class="thumbnail" id="paparazzi"> <a class="playback"> <img class="play" src="http://www.lucisz.com/imgs/play.png" /> </a> <audio> <source src="../audio/fernando_garibay_paparazzisnlmix.ogg" type="audio/ogg" /> <source src="../audio/fernando_garibay_paparazzisnlmix.mp3" type="audio/mpeg" /> Your browser does not support HTML5 audio. </audio> </div> <div class="thumbnail" id="danceinthedark"> <a class="playback"> <img class="play" src="http://www.lucisz.com/imgs/play.png" /> </a> <audio> <source src="../audio/fernando_garibay_danceinthedark.ogg" type="audio/ogg" /> <source src="../audio/fernando_garibay_danceinthedark.mp3" type="audio/mpeg" /> Your browser does not support HTML5 audio. </audio> </div> <div class="thumbnail" id="bornthisway"> <a class="playback"> <img class="play" src="http://www.lucisz.com/imgs/play.png" /> </a> <audio> <source src="../audio/fernando_garibay_bornthisway.ogg" type="audio/ogg" /> <source src="../audio/fernando_garibay_bornthisway.mp3" type="audio/mpeg" /> Your browser does not support HTML5 audio. </audio> </div> </div>
JavaScript: (works, but plays / pauses separately)
$(function() { $(".playback").click(function(e) { e.preventDefault(); var song = $(this).next('audio').get(0); if (song.paused) song.play(); else song.pause(); }); });
JavaScript: (my ugly concept)
$(function() { $(".playback").click(function(e) { e.preventDefault(); var song = $(this).next('audio').get(0); if (song.paused) song.play(); song.not($(this).pause(); else song.pause(); }); });
technopeasant
source share