我在叠加层上有一个类似于Facebook的盒子窗口。当用户点击时,此框隐藏 - 显然。我希望在此窗口可见时使用音频元素,并在隐藏此窗口时停止音频。 所以这是我的html和jquery。请帮我。
<audio id="audio_player" loop="loop">
<source src="fileadmin/templates/main/crowd.mp3" type='audio/mpeg; codecs="mp3"'>
<source src="fileadmin/templates/main/crowd.ogg" type='audio/ogg; codecs="vorbis"'>
</audio>
$(document).ready(function(){
function audio_player (){
if (
$('fb_like_box').css('display','block')){
$('audio').each(function() {
var song = $(this);
song.play();
});
}
else if (
$('fb_like_box').css('display','none')) {
$('audio').each(function() {
var song = $(this);
song.pause();
});
}
else {}
}
});
答案 0 :(得分:1)
您的代码在语法上是错误的。
首先,以下语法用于赋值。
$('#fb_like_box').css('display','block')
它将属性block
分配给元素$('#fb_like_box');
如果你想检查它,你可以使用这样的东西:
if($('#fb_like_box').css('display') == 'block') {
// then do something
}
做正在尝试的事情的好方法是:
if ($('#fb_like_box').is(':visible')) {
$('audio').each(function() {
$(this).play();
});
} else {
$('audio').each(function() {
$(this).pause();
});
}
答案 1 :(得分:1)
尝试一些非常基本的东西,比如
$(document).ready(function(){
$('audio')[0].play();
}
如果这样,至少你知道你是在正确的轨道上。 一旦你知道你可以播放它,添加条件,然后测试它们是否正常工作。
答案 2 :(得分:0)
使用:visible选择器,根据.
添加#
或fb_like_box
。 fb_like_box
不是有效的选择器。假设它是一个ID
if ($('#fb_like_box').is(':visible')){
// like box visible, play audio
$('audio').each(function() {
var song = $(this);
song.play();
});
}
else {
// like box hidden pause audio
$('audio').each(function() {
var song = $(this);
song.pause();
});
}
答案 3 :(得分:0)
我认为主要问题是你应该在facebook字段被隐藏的那一刻运行该函数,因此,你需要将该函数添加到足够的监听器中。
我认为在这种情况下它会是'DOMAttrModified
':
一些伪代码(未经过测试的代码):
$('facebookelementtohide').addEventListener('DOMAttrModified', function(e){
audio_player ();
}, false);