我有一个这样的无序列表:
<ul id="names-list">
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
假设我想在此列表中为每个<li>
项添加一个名称:
var names = [ "Jon", "Nick", "Bill", "Tom" ];
我的代码是这样的:
$('#names-list li').each(function () {
$(this).append(names);
});
但是由于某些原因它不起作用。有人能告诉我我做错了什么吗?感谢。
答案 0 :(得分:15)
为什么没有人指出将李的数量基于dom中空的数量是一种可怕的方式呢?根据数组中有多少项来生成li更好。
请改为尝试:
<强> HTML 强>
<div id="parent">
<ul id="names-list">
<!-- empty list -->
</ul>
</div>
<强> JS 强>
var names = [ "Jon", "Nick", "Bill", "Tom" ];
var list = $("#names-list");
var parent = list.parent();
list.detach().empty().each(function(i){
for (var x = 0; x < names.length; x++){
$(this).append('<li>' + names[x] + '</li>');
if (x == names.length - 1){
$(this).appendTo(parent);
}
}
});
答案 1 :(得分:11)
each()方法有一个“index”参数。用它来获取列表中的正确值。
var names = [ "Jon", "Nick", "Bill", "Tom" ];
$('#names-list li').each(function (index) {
$(this).text(names[index]);
});
答案 2 :(得分:1)
使用为每个功能提供的index
属性。此外,由于它是文本数据,您可以使用.text(...)
函数:
$('#names-list li').each(function (index) {
$(this).text(names[index]);
});
请参阅jsFiddle
答案 3 :(得分:-2)
var index = 0;
$('#names-list li').each(function () {
$(this).html(names[index]);
index = index + 1;
});