Это работает отлично. Обратите внимание, что вы должны использовать $ (window) .load () вместо $ (document) .ready (), потому что $ (document) .ready () срабатывает до фактической загрузки изображений, и поэтому изображения не будут иметь ширину.
$(window).load(function() {
$('div').each(function() {
$(this).width($(this).find('img').width());
});
});
Редактировать: Обратите внимание, что это будет основывать ширину первого изображения в DIV. Просто измените индекс ([0]), чтобы основать его на другом изображении в div.
Редактировать 2: Применить поправку Джона к функции .width ().