【发布时间】:2012-01-07 06:42:20
【问题描述】:
analyse : function (that) {
var a = new Array();
var x = 0;
$(that).children("li").each(function(){
console.log('test1');
a[x]['name'] = 'f';
a[x]['link'] = 'UUUUUUUUUUU';
console.log('test2');
x++;
})
return a;
}
稍后我正在尝试创建一个数组来存储我的 PHP 菜单中的层次结构。
控制台不会显示“test2”,我做错了什么?
在 Didier G 的帮助下变成了这个:
analyse : function (that) {
return $(that).children('li').map(function() {
var b = {
name: $(this).children('a').text(),
link: $(this).children('a').attr('href')
};
if ($(this).children('ul').size() > 0) {
b.childs = mcms.module.analyse($(this).children('ul'));
}
return b;
});
}
所以,如果我说var y = analyse('#menu');,我就明白了! ^^
【问题讨论】:
-
另外你不应该使用
new Array(),而是[] -
控制台是否出现错误?似乎
a[x]未定义,因此您尝试将属性“名称”分配给未定义的变量。 -
new Array()根据 ECMAScript 语言规范及其实现完全没问题,但[]更短,它的 reduced compatibility 今天几乎不相关。
标签: jquery arrays multidimensional-array each