0
我有一些div,我使用jQuery的淡入/淡出,當點擊一個鏈接時帶上頁面。每個頁面都有一個關聯的html5音頻元素,也相應地淡入/淡出。爲什麼這個if語句不起作用?
$('.link').on('click', function(e){
var targetpage = $($(this).attr("href"));
$('.pagecontainer>div').fadeOut(0); //fade out currently displayed page
targetpage.fadeIn(); //fade in page associated with link
if (targetpage.children().hasClass('backgroundmusic')) {
$('audio').animate({volume: 0}, 1000); //fade out currently playing audio
alert('audio faded out');
$.each($('audio'), function() { //stop all audio
this.currentTime=0;
this.pause();
alert('audio stopped');
});
alert('stop function executed');
}
});
$('.sound').on('play', function() { //since volume was faded out, reset volume when click play button
$('audio').animate({volume: 1}, 100);
});
HTML:
<a href="#page1" class="link">Audio 1</a>
<a href="#page2" class="link">Audio 2</a>
<a href="#page3" class="link">Audio 3</a>
<div class="pagecontainer">
<div id="page1"> //all three audio elements are in exact same spot
//clicking page link fades in current audio and fades in new one
<div class="backgroundmusic">
<audio controls loop class="sound" preload="none">
<source src="../../site/music/music1.mp3"/>
<source src="../../site/music/music1.ogg"/>
</audio>
</div>
</div>
<div id="page2">
<div class="backgroundmusic">
<audio controls loop class="sound" preload="none">
<source src="../../site/music/music2.mp3"/>
<source src="../../site/music/music2.ogg"/>
</audio>
</div>
</div>
<div id="page3">
<div class="backgroundmusic">
<audio controls loop class="sound" preload="none">
<source src="../../site/music/music3.mp3"/>
<source src="../../site/music/music3.ogg"/>
</audio>
</div>
</div>
</div>
「警報( '音頻淡出')」 將執行,但 「警報( '音頻停止')」 不執行因爲它沒有運行「$ .each($('audio'),function」腳本根本沒有「alert('stop function executed')」。我必須使用這個「each」腳本作爲$('audio')。currentTime = 0不起作用,$('audio')。pause()也不起作用,因爲我的頁面上有多個音頻實例。
有沒有人知道爲什麼這不起作用?
謝謝。
謝謝,但沒有奏效。我發現只有page1上的音頻可以正確停止。第2頁和第3頁似乎不適用於該腳本。我被告知它可能與您有什麼關係,無法停止/暫停/重置尚未加載的音頻,並且出於某種原因,無論哪個音頻元素首先出現在DOM中都會加載......仍在尋找修復這個。我無法自動加載所有文件(例如,刪除'preload =「auto」'),這會導致Google Chrome掛起,因爲我的網站上有20個mp3/ogg文件試圖同時加載。 – Windbrand 2013-03-28 00:49:10
您可以將它們設置爲加載隊列。如果您使用jQuery內置隊列中的AJAX之類的東西,您可以異步加載所有這些 - 一次一個。沒有掛,只是一聲巨響。 – 2013-03-28 07:38:17