【问题标题】:How to remove dynamically created audio element in javascript?如何在javascript中删除动态创建的音频元素?
【发布时间】:2017-06-04 16:00:39
【问题描述】:

我每 30 秒刷新一次脚本以检查更改。返回的数据设置音频元素的 src。

如果数据已更改,我将 src 属性更改为匹配,但 onClick - 我听到 两个 音频文件一起播放。

这里发生了什么,如何删除之前的音频文件?

(function fetchCal() {
$.getJSON('events', function(data) {

//I need to clear any previously created elements here

  var nowAudio = document.createElement('audio');
  nowAudio.setAttribute('src',"audio/"+data.uid+"."+data.nowTitleURL+".mp3" );

  $('.now').click(function() {
      nowAudio.play();
  });

})
setTimeout(fetchCal, 30000); //refresh calendar every 30 secs
})();

注意:$( "audio" ).remove(); 不起作用

【问题讨论】:

  • “删除”是什么意思?它没有添加到 DOM 中,为什么要删除它?
  • 这个问题更像是你在绑定点击事件而不是删除之前的点击事件......

标签: javascript jquery audio createelement


【解决方案1】:

您将多个 clcicks 绑定到同一个元素,因此它将始终具有先前的单击事件。你需要解绑它。

$('.now').off("click.audio").on("click.audio", function() {
  nowAudio.play();
});

【讨论】:

  • 非常感谢!!我最近遇到了与原始问题相同的代码问题,您的回答解决了这个问题!再次感谢:)
猜你喜欢
  • 2016-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-01
  • 1970-01-01
  • 2021-01-23
相关资源
最近更新 更多