jQuery音频淡出和暂停,单击淡入音频并恢复播放

4
这里的问题是什么?当我点击#background_audio div时,音频会淡出,然后自动淡入并继续播放,而无需再次按下按钮。我该如何解决它?
我想让音频在单击#background_audio时淡出并暂停,然后当再次单击#background_audio时,音频就会淡入并恢复播放。
<script type="text/javascript">
$(document).ready(function(){
    $('#mute').click(function(){
        $('#background_audio').animate({volume: 0}, 1000);
        setTimeout(function(){('#background_audio').pause()},1000);
    });
    $('#mute').click(function(){
        $('#background_audio').animate({volume: 1}, 1000);
        setTimeout(function(){('#background_audio').pause()},1000);
    });
});
</script>
1个回答

8

您正在向同一jQuery元素添加两个单击处理程序,因此在单击时将调用两个处理程序。

您必须添加一个if来验证声音是否已静音。

当您单击按钮时,声音将使用fadeIn静音或取消静音。

HTML

<div style="bottom:0; position:absolute; height:32px; width:100%;">
    <button id="mute">Mute sound</button>
    <audio id="background_audio"  src="http://www.noiseaddicts.com/samples/2541.mp3" autoplay="autoplay"></audio>
</div>

Javascript

$(document).ready(function(){
    var backAudio = $('#background_audio');

    var muted = false;

    $('#mute').click(function(){
        var button = $(this);
        if (!muted) {
            button.attr("disabled", "");
            backAudio.animate({volume: 0}, 1000, function () {
                muted = true;
                button.removeAttr("disabled", "");
                button.text("Unmute sound");
            });
        }
        else {
            button.attr("disabled", "");
            backAudio.animate({volume: 1}, 1000, function () {
                muted = false;
                button.removeAttr("disabled", "");
                button.text("Mute sound");
            });
        }
    });
});

JSFIDDLE


我不使用音频插件。我尝试了你提供的代码,它只在单击#background_audio div后淡出音频,但当再次点击时,音频没有淡入并继续播放。 - viksra
你确定你已经把脚本更新到页面了吗?请清除缓存。 - Ionică Bizău
是的,我确定(否则你的代码不会与我的有所不同)。 - viksra
由于某种原因,jsfiddle无法正确关闭<audio>和<div>标签...所以它甚至不能像在我的服务器上使用您的代码进行测试时那样静音音频。在这里查看jsfiddle:http://jsfiddle.net/X4cu9/ - viksra
谢谢!那个完美地解决了问题。我想点赞这个答案,但是它说我需要至少15个声望值。 - viksra
@viksra 谢谢,但你的所有投票都被重置了。 但请继续关注此页面,每天最多可以投5票。 :-) 谢谢! - Ionică Bizău

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接