我正在尝试根据数组中的值数创建li元素。 基本上,对于数组中的每个键,都需要创建一个li元素。
<ul class="alpharow">
</ul>
$(".alpharow").each(function() {
var alpha = new Array();
alpha['this'] = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
alpha['that'] = ['l', 'm', 'n', 'o', 'p', 'q', 'r'];
var n = alpha.length;
for (i = 0; i < n; i++) {
//$("li:eq(" + i + ")");
var li_tag = '<li class="alpha_li"></li>';
}
$(".alpharow").append(li_tag);
//$("span").text("There are " + n + " kys.");
});
所以,a,b,c等......都有自己的<li>
感谢您的帮助,如果有什么不清楚,请告诉我。
答案 0 :(得分:2)
你有阵列数组。如果您需要为所有人创建LI,请使用以下示例:
$(".alpharow").each(function() {
var alpha = new Array();
alpha['this'] = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
alpha['that'] = ['l', 'm', 'n', 'o', 'p', 'q', 'r'];
// go thru the main array
for (var key in alpha) {
// go thru the inner arrays
var arr = alpha[key];
for (i = 0, n = arr.length; i < n; i++) {
//apped LI's
$(".alpharow").append($('<li></li>', { class: 'alpha_li', text: arr[i] }));
}
}
});
答案 1 :(得分:1)
那里有几个问题:
$("li:eq(" + i + ")");
$(".alpharow").append(li_tag);
移动到循环中(但每次都不要进行查找,将$(".alpharow")
的结果缓存在顶部的变量中,然后再调用{ {1}},然后重复使用它。)each
是alpha
,您没有添加元素。 (JavaScript术语中的数组元素是数组对象中的属性,名称完全由数字组成。)您要为它添加几个属性,但它们不是元素,因此{{1}将是Array
。答案 2 :(得分:1)
这一切都源于你如何处理数组。在JS数组中没有定义的键名,而是使用了一个对象,所以这段代码可以工作:
var alpha = { };
alpha['this'] = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
alpha['that'] = ['l', 'm', 'n', 'o', 'p', 'q', 'r'];
$.each(alpha, function() {
$.each(this, function() {
var li_tag = '<li class="alpha_li">' + this + '</li>';
$(".alpharow").append(li_tag);
});
});
alpha
已更改为对象,我们设置了this
和that
个键。然后我们使用jQuery的$.each()
循环访问顶层对象,然后通过每个键到达我们的数组,然后将它们添加为li
元素。