在宣佈你的陣列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/
當然,你可以建立菜單起來像一個字符串你的原始代碼,但我已經選擇創建元素,因爲我去。
使用上面的對象結構,您可以輕鬆地添加一些額外的屬性來定義每個項目被點擊時會發生什麼。並且可以使子菜單數組中的每個項目具有與頂級相同的對象結構,以便根據需要嵌套更多和更多級別。