2017-01-19 1 views
0

매 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();

+1

"제거"란 무엇을 의미합니까? DOM에 추가되지 않으므로 제거해야하는 이유는 무엇입니까? – samsonthehero

+1

문제는 클릭 이벤트를 바인딩하고 이전 클릭 이벤트를 제거하지 않는 것과 비슷합니다. – epascarello

답변

1

당신은 같은 요소에 여러 clcicks 결합되어 작동하지 않았다. 그것을 바인딩 해제해야합니다.

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

감사합니다. 오늘 새로운 무언가를 배웠습니다. https://xkcd.com/1053/ –

관련 문제