2017-05-05 8 views
0

application.js에 있습니다. 작동하지만 첫 번째 노래에서만 작동합니다.jPlayer 자바 스크립트 이벤트 트리거는 첫 번째 노래에서만 작동합니다.

첫 번째 곡은 노래가 재생되고 두 번째 곡은 5 % (결국 75 %로 노래 재생으로 계산됩니다)입니다.

$(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); 
     } 
    }); 
}); 

편집 : 이반에

덕분에이 코드를 결국 : 당신이 요소 ID를 사용하여 요소를 선택하는 것처럼

$(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); 
      } 
     }); 
    }); 
}); 

답변

1

이 보이는

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

이는 것 id jquery_jplayer_1과 일치하는 첫 번째 요소에 적용하십시오.

이벤트를 여러 요소에 바인딩하려는 경우 대신 클래스 선택기를 사용할 수 있습니다.

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

죄송합니다, 저는 신입생입니다. 바인딩하려는 요소는 하나뿐입니다. jplayer를 재생하고 이벤트가 발생할 때마다 시간을 업데이트해야하지만 재생되는 첫 번째 노래에서 한 번만 트리거됩니다. 어떻게 든 재설정되지 않습니까? – fdsaevad

+0

이벤트는 이벤트가 트리거 된 후에 바인딩 해제하기 때문에 한 번만 트리거됩니다. 'unbind'를 제거하고 어떤 일이 일어나는지보십시오. –

+0

알았습니다! 대단히 고맙습니다. 문제의 업데이트를 참조하십시오. – fdsaevad