我正在开发一个YouTube网络应用程序,允许用户使用可排序列表使用输入字段添加链接。一旦url通过匹配函数来检查url结构,就会抓取视频ID并将其放在它自己的索引下的数组中。
var _videoList = new Array();
if (matchesReg)
{
var container = document.getElementById('sortable');
var _videoId;
//grab the video ID from the URL
_videoId = _videoUrl.replace(/^[^v]+v.(.{11}).*/,"$1");
//place the Videoid in an array
_videoList[_videoList.length] = _videoId;
var new_element = document.createElement('li');
//set the id of the li element to match it's position in the array
new_element.id = _videoList.length;
new_element.innerHTML = _videoUrl;
container.insertBefore(new_element, container.firstChild);
//diplay the vaild link message
document.getElementById('msg').style.display="block";
document.getElementById('msg').innerHTML = "Video URL added!";
// Clean input field
document.getElementById('newVideo').value="";
} else {
//failed to pass the regex test, diplay error
document.getElementById('msg').style.display="block";
document.getElementById('msg').innerHTML = "Error! Not a valid YouTube URL.";
}
我想要做的是添加一个链接到每个新的li元素,它将视频id传递给cue函数。我怎么可能开始实现这个目标?
答案 0 :(得分:1)
这是让你入门的东西:
var refId = _videoList.length;
var $new_element = $('li').attr('id', refId);
var $link = $('a')
.attr('href', _videoUrl)
.innerHtml(_videoUrl)
.data('refId', refId) // add parent li's id for reference in click event
.appendTo( $new_element )
.bind( 'click', function(){
cue( $link.data('refId') );
return false; // prevent browser's default click event
});
$new_element.appendTo( container );
答案 1 :(得分:0)
new_element.addEventListener('click' vid_clicked);
function vid_clicked(e){
e=e?e:window.event;
var id=e.target.id;
}
糟糕。抱歉,我不知道你想要jQuery,因为你的代码中没有。
答案 2 :(得分:0)
您的列表存在于DOM中。您不必将它们传递给函数,只需在将它们添加到队列的过程中选择它们即可。像下面这样的东西可以解决问题。
var yourFunction = function() {
var items = $("#sortable>li");
for (item in items) {
// put items[item] into your queue.
}
}
如果你想传递它们,那么只需将选择器传递给。
someFunction($("#sortable>li"));