audio_tag 仅播放第一个列出的音频

Posted

技术标签:

【中文标题】audio_tag 仅播放第一个列出的音频【英文标题】:audio_tag plays only the first listed audio 【发布时间】:2016-07-06 03:19:38 【问题描述】:

我正在索引视图中使用 audio_tag:我想让每个单词对应的声音文件都可以通过单击按钮来访问。截至目前,所有按钮都会播放与第一个列出的单词对应的声音。我一直在尝试将this 帖子的答案概括为这种情况,但我不知道如何在列出模型中的声音文件的上下文中概括效果。如何让按钮播放与每个特定项目相关的声音?

查看:

<ul>
  <% @lesson.words.each do |word| %>
    <li> 
      <%= image_tag word.image_url(:thumb) if word.image? %> &nbsp        
        <b><%= word.term %></b>

        <%= audio_tag word.sound, class: "audio-play" %>
        <button type="button" class="btn btn-default audio-button">
          <span class="glyphicon glyphicon-play" aria-hidden="true"></span>
        </button> 

    </li>
    <br>
  <% end %>
</ul>

application.js:

jQuery(document).ready(function() 
$(".audio-button").on("click", function() 
  $(".audio-play")[0].currentTime = 0;
    return $(".audio-play")[0].play();
  );
);

【问题讨论】:

【参考方案1】:

在您的脚本中,$(".audio-play")[0] 将返回整个页面中的第一个音频标签,这就是为什么总是播放第一个列出的单词的音频。

如下更新你的脚本

jQuery(document).ready(function() 
  $(".audio-button").on("click", function() 
    var audio = $(this).prev(".audio-play");

    audio.currentTime = 0;
    return audio.play();
  );
);

在更新的脚本中,被点击的按钮旁边的音频标签被检索并播放相应的声音。

运行sample code

【讨论】:

按钮不使用此更新的脚本播放任何音频。关于我还能尝试什么的任何想法?感谢您的帮助-新手在这里:) @gonzalo2000 我刚刚更新了我的答案。您可以运行我根据您的视图代码创建的示例代码。 谢谢。我仍然失去了更新脚本的所有单词的按钮功能。否则页面会按预期显示,我在日志中看不到错误。 在我的示例中,我提供了一些 html,以便您可以将您的与我的进行比较。如果您的 HTML 结构与我的相似,它将起作用。您的页面生成的 HTML 是什么? 我明白我的问题是什么,返回需要[0],因此return audio[0].play();(如您的小提琴所示:)

以上是关于audio_tag 仅播放第一个列出的音频的主要内容,如果未能解决你的问题,请参考以下文章

04_Unity音频常用接口

在第一个完成播放后播放第二个音频

当 MediaPlayer 完成播放第一个音频时,MediaPlayer 更改数据源错误

将 JS 音量控件附加到多个 Audiojs 音频播放器

如果我们需要播放另一个音频,如何停止音频

在android中播放两个音频文件