1

我正在尝试使用 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);只发生一次?我在这方面有点菜鸟,所以任何帮助将不胜感激!

4

1 回答 1

0

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

于 2014-12-08T20:32:38.537 回答