2017-05-05 2 views
0

ont dans l'application.js ... ils fonctionnent, mais seulement pour la première chanson.jPlayer javascript événement déclencheurs ne fonctionne que sur la première chanson

le premier est sur le jeu de la chanson, et le second est à 5% (qui sera finalement 75%, à compter comme un jeu de la chanson).

$(document).ready(function(){ 
    $("#jquery_jplayer_1").bind($.jPlayer.event.play, function(event) { 
     $("#jquery_jplayer_1").unbind($.jPlayer.event.play) 
     var band = event.jPlayer.status.media.band; 
     var song = event.jPlayer.status.media.song; 
     $.get("/playlists/song_display?song=" + song + "&band=" + band); 
    }); 

    $("#jquery_jplayer_1").bind($.jPlayer.event.timeupdate, function(event) { 
     if (parseInt(event.jPlayer.status.currentPercentAbsolute) >= 5) { 
     $("#jquery_jplayer_1").unbind($.jPlayer.event.timeupdate) 
     var band = event.jPlayer.status.media.band; 
     var song = event.jPlayer.status.media.song; 
     $.get("/playlists/song_counter?song=" + song + "&band=" + band); 
     } 
    }); 
}); 

EDIT:

grâce à Ivan, a fini avec ce code:

$(document).ready(function(){ 
    $("#jquery_jplayer_1").bind($.jPlayer.event.play, function(event) { 
     debugger 
     var band = event.jPlayer.status.media.band; 
     var song = event.jPlayer.status.media.song; 
     $.get("/playlists/song_display?song=" + song + "&band=" + band); 

     $("#jquery_jplayer_1").bind($.jPlayer.event.timeupdate, function(event) { 
      if (parseInt(event.jPlayer.status.currentPercentAbsolute) >= 5) { 
      debugger 
      $("#jquery_jplayer_1").unbind($.jPlayer.event.timeupdate) 
      var band = event.jPlayer.status.media.band; 
      var song = event.jPlayer.status.media.song; 
      $.get("/playlists/song_counter?song=" + song + "&band=" + band); 
      } 
     }); 
    }); 
}); 

Répondre

1

On dirait que vous sélectionnez vos éléments en utilisant ids élément

$("#jquery_jplayer_1").bind(...) 

Cela ne appliquer au premier élément correspondant à l'ID jquery_jplayer_1.

Si vous souhaitez lier des événements à plusieurs éléments, vous pouvez utiliser un sélecteur de classe à la place.

$(".jquery_jplayer").bind(...) 
+0

Désolé, je suis un newb. Il n'y a qu'un seul élément auquel je veux me lier: j'ai besoin de déclencher les événements jplayer play et timeupdate, chaque fois qu'ils se produisent, mais cela ne se déclenche qu'une fois, sur la première chanson qui joue. d'une certaine manière, ça ne se réinitialise pas? – fdsaevad

+0

Les événements ne se déclenchent qu'une seule fois car vous dissociez les événements après leur déclenchement. Essayez de supprimer le 'unbind' et voyez ce qui se passe. –

+0

J'ai compris! Homme très apprécié, voir mise à jour en question. – fdsaevad