在宣布你的阵列nav
您可以nav[index]
访问它的元素,但你不能只是说nav[0][0]
添加第二个维度项0 - 你需要使用它之前宣布nav[0]
作为数组:
nav[0] = [];
nav[0][0] = ...
但是你可以使用数组文本,在那里你的目的我建议对象的数组声明这一切在一个声明:
var nav = [
{ "title" : "Item A",
"submenu" : [ "Item A1", "Item A2" ] },
{ "title" : "Item B",
"submenu" : [ "Item B1", "Item B2", "Item B3"] }
];
如果您想要的输出是这样的:
<ul>
<li>Item A
<ul>
<li>Item A1</li>
<li>Item A2</li>
</ul>
</li>
<li>Item B
<ul>
<li>Item B1</li>
<li>Item B2</li>
<li>Item B3</li>
</ul>
</li>
</ul>
你可以做到这一点,像这样:
var $menu = $("<ul></ul>");
$.each(nav, function(i, val) {
var $item = $("<li></li>").html(val.title),
$sub = $("<ul></ul>");
$.each(val.submenu, function(j, sub) {
$sub.append($("<li></li>").html(sub));
});
$menu.append($item.append($sub));
});
$("body").append($menu);
演示:http://jsfiddle.net/9kRs3/
当然,你可以建立菜单起来像一个字符串你的原始代码,但我已经选择创建元素,因为我去。
使用上面的对象结构,您可以轻松地添加一些额外的属性来定义每个项目被点击时会发生什么。并且可以使子菜单数组中的每个项目具有与顶级相同的对象结构,以便根据需要嵌套更多和更多级别。