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