JQuery将列表变量传递给另一个函数

时间:2012-01-26 19:47:17

标签: jquery list variables jquery-ui-sortable

我正在开发一个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函数。我怎么可能开始实现这个目标?

3 个答案:

答案 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"));