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

标签 javascript jquery ruby-on-rails audio

我正在索引 View 中使用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();
  });
});

最佳答案

在您的脚本中,$(".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

关于javascript - audio_tag 仅播放第一个列出的音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38215880/

相关文章:

ruby-on-rails - 如何在主机上运行Nginx的情况下在Docker容器中运行Rails应用程序?

mysql - 如何节省时间以及用户在 Rails 中的时间戳中输入日期

ruby-on-rails - Controller 命名空间内未初始化的常量

javascript - 如何为表中的多个数据创建 AJAX POST 按钮?

javascript - 修复 header 偏移 html anchor

jquery - 如何使用 jQuery 在选择时忽略大小写?

javascript - 当我多次单击提交按钮时(当加载发帖时),该帖子会被多次发帖

javascript - jQuery 日期时间选择器 XDsoft : How do I get value from inline calendar?

javascript - 如何创建递归函数并维护局部变量的历史记录?

javascript - 将值从组件中的回调传递到另一个组件