1

我正在使用 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>

轨道.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();
    });
});

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

4

1 回答 1

0

好像您有多个具有相同#play-buttonID 的播放按钮,对吧?

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

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

于 2014-12-06T14:49:17.783 回答