2013-05-15 1 views
1

J'utilise soundmanager2 pour jouer certaines chansons qui ont été téléchargées. Cependant, seule la première chanson joue. Le bouton de lecture ne fonctionnera tout simplement pas pour les autres chansons en dehors de la première.Javascript ne joue que la première chanson avec 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(); 
    }); 
}); 

Probablement un problème très newb, mais quelqu'un peut-il endroit où je vais mal? Merci d'avance.

+0

Que fait '.toggle()' à l'objet jQuery? – idbehold

+0

Le bouton de lecture se transforme en bouton d'arrêt – jenno

Répondre

0

Il semble que vous ayez plusieurs boutons de lecture avec le même ID #play-button, n'est-ce pas?

Je peux me tromper, mais pour autant que je sache, les sélecteurs jQuery ne rechercheront le premier élément correspondant que si le sélecteur est un identifiant. Cela signifie que pour les pistes 2, 3 ... n, le sélecteur ne fonctionnera pas du tout.

Vous devriez pouvoir utiliser une classe comme .play-button pour déclencher l'action toggle() puisque les sélecteurs jQuery des classes sont déclenchés pour chaque élément correspondant. Cependant, vous pourriez aussi avoir besoin d'un moyen de distinguer les différentes pistes - si elles sont toutes appelées mySound, comment SoundManager peut-il savoir quelle piste jouer? C'est un problème auquel je suis également confronté, ce qui m'a d'abord amené à cette question.

Questions connexes