Javascript只用soundmanager2播放第一首歌

时间:2013-05-15 23:29:39

标签: 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();
    });
});

可能是一个非常新的问题,但任何人都可以找到我出错的地方吗?提前谢谢了。

1 个答案:

答案 0 :(得分:0)

好像你有几个具有相同#play-button ID的播放按钮,对吧?

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

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