У меня есть некоторые div, которые я использую jQuery's fade in/out для вывода на страницу при нажатии ссылки. Каждая страница имеет связанный с ней аудио-элемент 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 »). currentTime = 0 не работает, также не $ ('audio'). Pause(), так как у меня есть несколько звуковых экземпляров на моей странице.
Кто-нибудь знаете, почему это не работает?
Спасибо.
Спасибо, но это не сработало. Я узнал, что только звук на странице1 останавливается правильно. Стр. 2 и 3, похоже, не работают с этим скриптом. Мне сказали, что это может иметь какое-то отношение к вам, вы не можете остановить/приостановить/сбросить звук, который еще не загружен, и по какой-то причине какой бы звуковой элемент не появился вначале в DOM, он будет загружаться ... Все еще ищет исправление для это. Я не могу загружать их автоматически (т. Е. Удалять 'preload =" auto "'), что приведет к зависанию Google Chrome, поскольку у меня есть 20 mp3/ogg на моем веб-сайте, пытающихся загрузить в то же время , – Windbrand
Вы можете установить их для загрузки в очередь. Если вы используете что-то вроде AJAX с встроенной в jQuery очереди, вы можете загружать все из них асинхронно - по одному за раз. Нет, повесить, просто взрыв. –