Так как у вас будет несколько элементов списка, вы можете создать массив ширины по ходу дела:
var listWidth = [];
$('ul li').each(function(){
listWidth.push($(this).width());
});
console.log(listWidth);
Или вместо этого вы можете создать объект с шириной:
var listWidth = {};
$('ul li').each(function(){
listWidth[$(this).attr('id')] = $(this).width();
});
console.log(listWidth);
В этом примере создается объект, который содержит идентификатор тега и его ширину ({ id1: width, id2: width, etc...}
, при условии, что у каждого тега есть идентификатор).
Приведенный вами пример кода имел проблему с тем, что при возвратеwidth, он возвращал ее функции каждой (которая, вероятно, просто отбросила ее), но listWidth
было возвращаемым значением функции каждой , а не анонимной функции внутри (так, поскольку каждая функция возвращает объект jQuery, это то, что было назначено для listWidth).