使用jquery和HTML5音频标签切换音频源

时间:2012-02-23 21:20:48

标签: jquery html5 audio html5-audio

我只找到了另一个解决方案,但它不完整,所以我需要帮助。

我有音频设置:

<audio id="player" controls="controls">
          <source id="ogg_src" src="lib/audio/barger01.ogg" type="audio/ogg" />
          <source id="mp3_src" src="lib/audio/barger01.mp3" type="audio/mp3" />
          Your browser does not support the audio element.
    </audio>

我有一个动态生成的链接表来更改曲目:

<div id="audio_list">
   <a href="#" class="track" data-location="http://www.newoggtrack.ogg">sample</a>
</div>

我有这个jquery,我不知道如何更改曲目

$('.track').click(function(){

    load_track = $(this).attr('data-location');//gets me the url of the new track

    change_track(load_track);// function to change the track of the loaded audio player without page refresh preferred...

});

我找到了这个功能,但我没有以正确的方式使用它

 function change_track(sourceUrl) {

        audio.empty();
        $("#ogg_src").attr("src", sourceUrl).appendTo(audio);
        /****************/
        audio[0].pause();
        audio[0].load();//suspends and restores all audio element
        /****************/
    }

audio = $("<audio>").attr("id", "player")
                        .attr("preload", "auto");

2 个答案:

答案 0 :(得分:71)

您的更改功能应如下所示:

function change(sourceUrl) {
    var audio = $("#player");      
    $("#ogg_src").attr("src", sourceUrl);
    /****************/
    audio[0].pause();
    audio[0].load();//suspends and restores all audio element

    //audio[0].play(); changed based on Sprachprofi's comment below
    audio[0].oncanplaythrough = audio[0].play();
    /****************/
}

问题是audio.empty()和音频变量。您试图附加一个清空的音频标签,并且没有将音频标签写回浏览器。

答案 1 :(得分:5)

您可能还想重命名该函数,因为'change'已经是jQuery Universe中的一个函数。