有没有办法让jPlayer的timeupdate每秒只执行一次?

时间:2013-08-15 16:30:01

标签: javascript jquery jplayer scrolltop

我正在尝试使用jPlayer创建与视频中特定时间相关的项目的弹出div(相关产品)。这是我的代码:

$("#jquery_jplayer_1").bind($.jPlayer.event.timeupdate, function(event) {
            var requestProducts = xml.getElementsByTagName("product");

            for(var i = 0; i < requestProducts.length; i++){
                var mark = (requestProducts[i].getElementsByTagName("mark")[0].childNodes[0] == undefined) ? '' : requestProducts[i].getElementsByTagName("mark")[0].childNodes[0].nodeValue;
                var item_name = (requestProducts[i].getElementsByTagName("item_name")[0].childNodes[0] == undefined) ? '' : requestProducts[i].getElementsByTagName("item_name")[0].childNodes[0].nodeValue;
                var item_url = (requestProducts[i].getElementsByTagName("item_url")[0].childNodes[0] == undefined) ? '' : requestProducts[i].getElementsByTagName("item_url")[0].childNodes[0].nodeValue;
                var item_thumb_url = (requestProducts[i].getElementsByTagName("item_thumb_url")[0].childNodes[0] == undefined) ? '' : requestProducts[i].getElementsByTagName("item_thumb_url")[0].childNodes[0].nodeValue;
                var newItem = ("<li><a href='"+item_url+"' target='_blank'><img src='"+item_thumb_url+"'><br /><strong>"+item_name+"</strong></a></li>");

                if ($.jPlayer.convertTime(event.jPlayer.status.currentTime) == mark){
                    if (i < 1){
                        $("#related-products").css('display','block');
                        $("#related-products").html("<h4>Related Products</h4><ul class='slider'></ul>");
                    }
                    $(".slider").append(newItem);
                    $("#related-products").scrollTop(208*i);
                }
            }
            });

我正在使用jPlayer事件timeupdate和convertTime来获取与要显示的每个项目的预设时间(标记)匹配的时间(以秒为单位)。我遇到的问题是timeupdate每秒返回8次,因此项目被添加8次而不是一次。如果我将代码更改为if ($.jPlayer.convertTime(event.jPlayer.status.currentTime) > timecode){,它将仅添加每个项目一次,但随后它将继续执行$("#related-products").scrollTop(208*i);,因此div中项目的滚动无法正常工作。有没有办法让timeupdate每秒只发生一次或让$("#related-products").scrollTop(208*i);只发生一次?我在这方面有点像菜鸟,所以任何帮助都会非常感激!

1 个答案:

答案 0 :(得分:0)

您可以使用布尔值来了解您是否已经进行了函数调用。