有什么方法可以在 jPlayer jquery 插件中设置 15 秒倒带按钮?

Any way to have a 15 seconds rewind button in the jPlayer jquery plugin?

我正在使用 this jPlayer plugin 在我的网站上安装音频播放器。

正在尝试获取分配给按钮的功能,该按钮将音频播放从当前时间位置倒回 15 秒并继续播放。

类似于 iPhone iTunes 播客播放器中的按钮。

有代码在this fiddle

基本上,我在脚本区域中尝试 运行 的代码如下。

$(".rewind").click(function(){
        $("#jquery_jplayer_1").jPlayer("play", event.jPlayer.status.currentTime - 15); 
    }); 

问题是 event.jPlayer.status.currentTime 通常在 jPlayer 操作引发事件时访问。有几个方法可以解决您的问题,但最简单的方法可能是直接访问 jPlayer data,如:

var currentTime = $('#jquery_jplayer_1').data('jPlayer').status.currentTime;

您更新后的代码可能如下所示:

$(".rewind").click(function(e){
    var currentTime = $('#jquery_jplayer_1').data('jPlayer').status.currentTime;
    if (currentTime > 15) {
        $("#jquery_jplayer_1").jPlayer("play", currentTime - 15);     
    }    
});

已更新 Fiddle:http://jsfiddle.net/XLNCY/18423/

看起来你很接近,但你在普通的点击处理程序中没有 'jPlayer' 事件并且这个 part of the jPlayer documentation 声明:

The jPlayer object itself may also be accessed through $('#jp').data('jPlayer').

这个 JSFiddle 正在处理下面突出显示的更改: http://jsfiddle.net/XLNCY/18422/

$(".rewind").click(function(event){
    $("#jquery_jplayer_1").jPlayer("play", $("#jquery_jplayer_1").data('jPlayer').status.currentTime - 15); 
});

另一种方法,将当前时间存储在 timeupdate 事件的变量中:

$(document).ready(function() {
    var current_time;

    $("#jquery_jplayer_1").jPlayer({
        ready: function(event) {
            $(this).jPlayer("setMedia", {
                title: "Bubble",
                m4a: "http://jplayer.org/audio/mp3/Miaow-07-Bubble.mp3",
                oga: "http://jplayer.org/audio/ogg/Miaow-07-Bubble.ogg"
            });
        },
        timeupdate: function(e){
            current_time = e.jPlayer.status.currentTime;
        },
        swfPath: "http://jplayer.org/latest/dist/jplayer",
        supplied: "mp3, oga",
        wmode: "window",
        useStateClassSkin: true,
        autoBlur: false,
        smoothPlayBar: true,
        keyEnabled: true,
        remainingDuration: true,
        toggleDuration: true
    });

    $(".rewind").on('click', function(e){
        $("#jquery_jplayer_1").jPlayer('play', current_time - 15);
    });
});   

jsFiddle