Sem*_*Sem 2 arrays each jquery multidimensional-array
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;
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建一个数组来存储PHP菜单中的层次结构.
控制台不会显示"test2",我做错了什么?
在迪迪埃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;
});
}
Run Code Online (Sandbox Code Playgroud)
所以,如果我说var y = analyse('#menu');我得到了一大堆!^^
'a[x]'在那一刻是不确定的.你必须首先构建一个对象并将其分配给'i'位置('x'确实是迭代器的非标准名称,感谢@Cito):
var a = new Array();
var i = 0;
$(that).children("li").each(function(){
console.log('test1');
a[i] = { name: 'f', link: 'UUUU' };
console.log('test2');
i++;
});
Run Code Online (Sandbox Code Playgroud)
注意:你的代码;在each()之后错过了一个.虽然它是有效的javascript来省略分号,但我认为最好明确地使用它们以避免误解.
使用.map()可以实现创建数组
var a = [];
// .map() returns a jquery array, to obtain a pure javascript array, you must call .toArray() afterwards
a = $(that).children('li').map(function() {
return { name: 'f', link: 'UUUU' };
}).toArray();
Run Code Online (Sandbox Code Playgroud)
这是一个jsfiddle来说明
该文章涵盖了)在jQuery的建设数据收集从列表的使用.每()和.map(的.
| 归档时间: |
|
| 查看次数: |
3169 次 |
| 最近记录: |