2

我使用 jQuery UI 为 html5 音频播放器创建了一个滑块。我遇到的问题是滑块本身不响应timeupdate轨道本身的时间变化()。然而,它确实会响应拖动滑块和歌曲,并time通过更改音频的时间来对此做出响应。

对我来说,在播放曲目时,滑块似乎受到了其他因素的影响,因为在播放left: 0%时滑块上有一个不变的样式,即使 jQuery 声明这应该改变。当我将 jQuery 设置right: pos +'%为正确时,样式会随音频动态变化,但left: 0%样式仍然存在。控制台中没有显示错误,所以我真的不知道发生了什么。

$(song).on('timeupdate', function() {

  var rem = parseInt(song.duration - song.currentTime, 10),
  pos = (song.currentTime / song.duration) * 100,
  mins = Math.floor(rem/60,10),
  secs = rem - mins*60;

  $('.body_container .player .time').text('-' + mins + ':' + (secs > 9 ? secs : '0' + secs));
  if(manualSeek = true){$('.body_container .player .ui-slider-handle').css({left: pos + '%'}); }
  if (loaded = true) {
  loaded = true;

    $('.body_container .player .slider').slider({

      max: song.duration,

      slide: function() {             
        manualSeek = true;
      },
      stop:function(e,ui) {
        manualSeek = false;         
        song.currentTime = ui.value;
      }

    });
   }

});

旁注:就像有人在上一个问题上提出的那样,我只是想我会说。song已定义我只是没有包含它,因为它不需要。从播放器的数据属性中获取的曲目 url 在song = new Audio(url);哪里。url

4

1 回答 1

0

你试过用'bind'代替'on'吗?前任:$(song).bind('timeupdate',function(){})

“on”我认为是针对点击事件的事件委托。

于 2013-02-27T00:05:13.377 回答