我正在尝试使用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);
只发生一次?我在这方面有点像菜鸟,所以任何帮助都会非常感激!
答案 0 :(得分:0)
您可以使用布尔值来了解您是否已经进行了函数调用。