2017-05-05 45 views
0

在application.js中有这个...他们的工作,但只适用于第一首歌。jPlayer javascript事件触发器只适用于第一首歌

第一个是歌曲播放,第二个是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); 
     } 
    }); 
}); 

编辑:

感谢伊万,结束了这段代码:

$(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

看起来你正在使用的元素ID选择您的元素

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

这不仅会适用于匹配ID为jquery_jplayer_1的第一个元素。

如果要将事件绑定到多个元素,则可以改为使用类选择器。

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

对不起,我是一个新手。我只想绑定一个元素 - 每次发生时都需要触发jplayer play和timeupdate事件,但它只会在第一首播放的歌曲中触发一次。不知何故,它不重置? – fdsaevad

+0

这些事件只触发一次,因为您在事件触发后解除绑定。尝试删除'unbind'并查看会发生什么。 –

+0

知道了!非常感谢的人,看到更新的问题。 – fdsaevad

相关问题