Вы бы использовать .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();
Объект, возвращенный с каждой итерации, добавляется в коллекцию.
Эта версия .map()
фактически возвращает объект jQuery, поэтому для преобразования в массив требуется .get()
.
Вы можете использовать другие $.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')
};
});
Обратите внимание, что параметры меняются с первой версии. Легко поймать на этом.
И, кстати, вы на самом деле не создаете «объектный литерал». Вы просто создаете объект. «Объектный литерал» - это обозначение, используемое для создания объектов.
Кроме того, по вашим числовым индексам я предположил, что вам нужен массив объектов. Если основная структура не должна быть массивом, то нужно будет немного отличаться, как это ...
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')
};
});
Это начинает нумерацию на 1
, как показано в этом вопросе. Хотя я все равно склоняюсь к использованию массива.
Он отлично работает, за исключением 1 штуки. Он называет мои объекты «объектом» вместо числа. Мне нужен «объект», чтобы иметь числовое число, например, 1, 2, 3, 4, 5 и т. Д. –
Вот хороший визуальный пример того, что у меня есть и что я необходимо http://screencast.com/t/fbXme1UTjnL –
Отклонить прото-мусор в нижней части изображения –