2017-01-19 11 views
0

Каждые 30 секунд я обновляю скрипт для проверки изменений. Возвращенные данные устанавливают src для аудиоэлемента.Как удалить динамически созданный аудио-элемент в javascript?

Если данные изменены, я изменяю атрибут 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(); не работает

+1

Что вы подразумевали под "удалить"? Он не добавляется в DOM, поэтому зачем его удалять? – samsonthehero

+1

Проблема больше похожа на то, что вы привязываете события кликов и не удаляете предыдущее событие клика .... – epascarello

ответ

1

Вы привязки нескольких clcicks к одному элементу, так что всегда будет иметь предыдущие события щелчка. Вам нужно отвязать его.

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

Вы рок, спасибо! Сегодня я узнал что-то новое https://xkcd.com/1053/ –