Ash*_*lue 2 each jquery object object-literal
我需要遍历一系列DOM元素并使用jQuery创建一个对象文字,如下所示.我猜这涉及到.each的使用,但我有点不知道接下来要做什么.
'1': {
'text': 'Maintain Compliance',
'desc': 'blah',
'size': 10,
'color': '#afb0b3'
},
'2': {
'text': 'lorem ipsum',
'desc': 'blah.',
'size': 4,
'color': '#9b9ca0'
},
'3': {
'text': 'lorem ipsum',
'desc': 'blah',
'size': 6,
'color': '#c5c6c7'
}
Run Code Online (Sandbox Code Playgroud)
小智 5
您将使用.map()创建对象的数组.
var objects = $('.my_elements').map(function(i,el) {
var $el = $(el);
return {
text:$el.text(),
desc:'blah',
size:'some_size_property_of_the_element?',
color:$el.css('color')
};
}).get();
Run Code Online (Sandbox Code Playgroud)
每次迭代返回的对象都会添加到集合中.
这个版本.map()实际上返回一个jQuery对象,所以你需要.get()转换为一个Array.
您可以使用另一个$.map直接创建数组.
var objects = $.map($('.my_elements'), function(el,i) {
var $el = $(el);
return {
text:$el.text(),
desc:'blah',
size:'some_size_property_of_the_element?',
color:$el.css('color')
};
});
Run Code Online (Sandbox Code Playgroud)
请注意,参数与第一个版本相反.容易被抓住.
顺便说一句,你并没有真正创造一个"对象文字".你只是在创建一个对象."Object literal"是用于创建对象的符号.
另外,我假设你的数字索引你想要一个对象数组.如果主结构不应该是一个数组,那么它需要有点不同,就像这样......
var objects = {};
$('.my_elements').each(function(i,el) {
var $el = $(el);
objects[ i+1 ] = {
text:$el.text(),
desc:'blah',
size:'some_size_property_of_the_element?',
color:$el.css('color')
};
});
Run Code Online (Sandbox Code Playgroud)
这将开始编号,1如问题所示.虽然我仍然倾向于使用数组.
| 归档时间: |
|
| 查看次数: |
1631 次 |
| 最近记录: |