我回答了一个问题,得到了一些有用的建议。我正在尝试创建一个可排序列表,允许用户将youtube url添加到列表中。我将它设置为获取id并将其放入数组中,然后我希望它使用以下javascript将视频URL和“cue”链接附加到列表中:
_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
var refId = _videoList.length;
$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 );
然而它给了我一个错误(在chrome中)
Object [object Object]没有方法'innerHtml'
我的HTML看起来像这样:
<div id="hostPanel">
<div id="videoList">
<ul id="sortable">
</ul>
</div>
任何帮助实现这一目标的帮助都很不错。
答案 0 :(得分:4)
innerHtml是DOM元素的属性,而不是jQuery对象的方法。请改用html()。
修改强>
关于评论:
$new_element = $('li').attr('id', refId);
这不会创建新的<li>
- 元素,它会占用文档中现有的<li>
- 元素。
在jQuery中使用
创建一个新元素$new_element = $('<li/>').attr('id', refId);
这里也一样:
var $link = $('a')
...必须
var $link = $('<a/>')
不要混用jQuery和Javascript(DOM)
这是创建元素的Javascript(DOM):
var $new_element = document.createElement('li');
jQuery期望$()
的标记,而DOM方法createElement()
期望tagName作为参数。