クリックすると、オーディオの src 属性が変更される jQuery 要素があります。HTML の変更をコンソールに出力したので、src が実際に変更されていることがわかります。Firefox (OSX 上) では問題ありません。ファイルの src が変更され、聞こえる音声も変更されます。
ただし、Chrome と Safari (OSX も同様) では、コンソールの src は以前と同じように変更されますが、再生されるオーディオは以前のファイルです。ボタンのクリックを繰り返すと、src が再び変更されますが、Chrome と Safari は最初のファイルしか再生しません。
以下は、「slarg」という単語を再生する最初の HTML です。
<audio id ="trget">
<source id = "trget_wav" src = "slarg.wav" type = "audio/wav">
<source id = "trget_mp3" src = "slarg.mp3" type = "audio/mp3">
</audio>
次に、ボタンをクリックすると、次の jQuery が実行されます。
$('#newWord').click(function() {
var tar = $('#trget').html();
console.log(tar);
$("#trget_wav").attr("src",stim[2]).detach().appendTo("#trget");
$("#trget_mp3").attr("src",stim[3]).detach().appendTo("#trget");
var tar = $('#trget').html();
console.log(tar);
});
これで、html は次のように変更されます。
<audio id ="trget">
<source id = "trget_wav" src = "blerg.wav" type = "audio/wav">
<source id = "trget_mp3" src = "blerg.mp3" type = "audio/mp3">
</audio>
しかし、Safari と Chrome ではまだ「slarg」という単語が再生されますが、FF では新しい単語「blerg」が再生されます...なぜですか? さらに重要なのは、Safari と Chrome で FF のように正しく動作させるにはどうすればよいでしょうか?