2017-05-05 72 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

相關問題