Javascript 仅使用 soundmanager2 播放第一首歌曲

标签 javascript jquery soundmanager2

我正在使用 soundmanager2 播放一些已上传的歌曲。但是,只播放第一首歌曲。除了第一首歌曲之外,播放按钮对任何其他歌曲都不起作用。

Javascript/html:

<% @tracks.each do |track| %>
  <tr>
    <td id="tracktitle"><%= track.title %></td>
    <td id="trackartist"><%= track.artist %></td>
    <td id="trackplayer"><%= image_tag 'play-button.gif', :id=>'play-button' %>
<%= image_tag 'stop-button.gif', :id=>'stop-button' %>


<script>
soundManager.setup({
  url: '/swf/',
  flashVersion: 9, // optional: shiny features (default = 8)
  // optional: ignore Flash where possible, use 100% HTML5 mode
  // preferFlash: false,
  onready: function() {
    soundManager.createSound({
      id: 'mySound',
      url: '<%= track.track_file %>',
      autoLoad: true,
      autoPlay: false,
      onload: function() {
        //alert('The sound '+this.id+' loaded!');
      },
      volume: 50
    });
  }
});
</script>

Tracks.js:

$(document).ready(function () {
    $('#play-button').click(function() {
        soundManager.play('mySound');
        $(this).toggle();
        $('#stop-button').toggle();
    });

    $('#stop-button').click(function() {
        soundManager.stop('mySound');
        $(this).toggle();
        $('#play-button').toggle();
    });
});

可能是一个非常新的问题,但是有人能发现我哪里出错了吗?提前谢谢了。

最佳答案

似乎有多个播放按钮具有相同的 #play-button id,对吗?

我可能是错的,但据我所知,如果选择器是一个 id,jQuery 选择器只会查找第一个匹配元素。这意味着对于轨道 2、3...n,选择器根本不起作用。

您应该能够使用像.play-button这样的类来触发toggle()操作,因为每个匹配元素都会触发类上的jQuery选择器。然而,您可能还需要一种方法来区分各个轨道 - 如果它们都称为 mySound,SoundManager 如何知道要播放哪个轨道?这也是我正在处理的一个问题,这最初导致我提出这个问题。

关于Javascript 仅使用 soundmanager2 播放第一首歌曲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16576654/

相关文章:

javascript - 通过单击菜单将溢出设置为隐藏在主体上

javascript - Soundmanager 2,无论我尝试什么,我都无法设置 SWF 路径

javascript - SoundManager2 在 Android 上同时播放多个声音

javascript - 如何将无限数量的参数传递给 console.log 调用?

javascript - jQuery,根据数据属性设置事件类

javascript - 在通过 React JSX 函数呈现页面之前运行 javascript

javascript - 如何读取单选按钮是否选中并将其保存为 1 使用 javascript?

javascript - 结合两个可观察对象,其中一个是可选的

javascript - DropZone.js - 选择文件后立即在屏幕上抛出错误