首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >暂停除已激活玩家外的所有其他玩家。<audio>元素的jQuery音频插件

暂停除已激活玩家外的所有其他玩家。<audio>元素的jQuery音频插件
EN

Stack Overflow用户
提问于 2013-04-15 20:37:38
回答 1查看 1.7K关注 0票数 4

我有这个插件,它将不同的样式应用于html5 <audio>元素,并向不支持.mp3文件格式的浏览器提供flash回退。我遇到的问题是,一旦你开始播放一首歌曲,然后在任何其他歌曲上点击播放,所有这些歌曲都会同时播放,这是糟糕的用户体验。

我试图弄清楚如何编辑插件,使它一次只播放一首歌曲,所以假设用户听了一首歌,然后点击播放另一首歌,第一个应该暂停,以此类推。我不完全确定,但我认为需要按照以下思路进行编辑:

代码语言:javascript
运行
复制
    playPause: function() {
      if (this.playing) this.pause();
      else this.play();
    },

然而,在插件中有许多地方似乎处理播放和暂停歌曲,所以我不确定这是不是正确的行。我仍然是jQuery的新手,不能完全弄清楚这个大型音频库是如何工作的,我一直在阅读代码注释,但仍然无法弄清楚这一点。

该插件的完整代码可在此处获得:http://freshbeer.lv/mg/js/audio.min.js

插件官网:http://kolber.github.io/audiojs/

你可以访问我的演示页面来查看这个问题,只需在几个玩家上点击play,你就会看到他们都同时在玩:http://freshbeer.lv/mg/index.html

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-16 19:13:30

使用addEventListener和play事件。这将暂停除已按下播放按钮的播放器之外的所有播放器。

代码语言:javascript
运行
复制
        audiojs.events.ready(function () {
            var as = audiojs.createAll();

            $('audio').each(function () {
                var myAudio = this;
                this.addEventListener('play', function () {
                    $('audio').each(function () {
                        if (!(this === myAudio)) {
                            this.pause();
                        }
                    });
                });
            });
        });
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16015334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档