0

我有以下音频标签:

<audio preload>
  <source src='/sounds/notify.ogg' type='audio/ogg'>
</audio>

我想通过 js 播放它,所以我自然希望调用 $("audio").play() 来完成它(它是页面上唯一的音频标签),但我收到一条错误消息,指出未定义播放。一查就是这样。音频元素没有播放属性。我读过的每个教程或资源都说这就是你需要做的,但是......好吧,我就是做不到。我的 FF 版本是否刚刚损坏,或者我是否遗漏了这些不同文本中未说明的内容?

4

2 回答 2

4

play()是一种 DOM 方法,而不是 jQuery 方法,这意味着您需要先获取实际的 DOM 元素,然后才能获取play属性。要获取实际的 DOM 元素,可以使用 jQueryget()方法:

$('audio').get(/*insert element index*/).play();

或简单地使用数组索引:

$('audio')[/*insert element index*/].play();

为了获得更多选择,您可以执行以下操作:

$('audio').eq(/*insert element index*/).prop('play')();

您甚至可以执行以下操作来播放每个音频元素:

$('audio').each(function () { this.play(); });
于 2013-11-14T23:04:45.113 回答
2

正如 Qantas 提到的 play 不是 jQuery 方法,但您可以根据需要轻松添加它,如下所示:

$.fn.play = function() {
   return this.each(function() {
      this.play();
   });
}
于 2013-11-14T23:53:19.427 回答