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が定義されていますが、必要ないので含めていません。プレーヤーの data-attribute から取得したトラック URL はsong = new Audio(url);どこにありますか。url

4

1 に答える 1

0

「on」の代わりに「bind」を使用してみましたか? 元:$(song).bind('timeupdate',function(){})

「on」は、クリックイベントのイベント委任用だと思います。

于 2013-02-27T00:05:13.377 に答える