В вашем примере вам нужно будет снова пройтись по коллекции фотографий и создать для них разметку:
$(parseXML).find('section').each(function(){
var $section = $(this),
photos = $section.find('photo'),
photoContainer = $('<div></div>', {
id : $section.attr('id'),
'class' : 'gallery-section'
});
photos.each(function(photo){
var photo = $(this),
imageurl = photo.attr('imageurl'),
title = photo.find('title').text(),
description = photo.find('description').text(),
kind = photo.find('description').attr('type');
var photoWrapper = $('<div class="photo"></div>'),
imageElem = $('<img/>', {
src : imageurl,
'class' : 'gallery-photo'
}),
photoInfo = $('<div></div>', {
'class' : 'photo-info ' + kind
}),
header = $('<h1></h1>', {
text: title
}),
photoDescription = $('<p></p>', {
text: description
});
photoInfo.append(header);
photoWrapper
.append(imageElem)
.append(photoInfo);
photoContainer.append(photoWrapper);
});
$('#photo-viewer-inner').append(photoContainer);
$('#loading').delay(600).fadeOut(600);
});
Примечание: я не проверял это. Я буду рад помочь, если что-то пропустил.
Как вы, вероятно, можете сказать, создание больших разделов HTML с последующим заполнением их данными является утомительным, часто неэффективным и кошмаром обслуживания. Проще использовать систему шаблонов, если вы можете. Это позволяет вам отделить структуру HTML от логики.
Несмотря на то, что доступно много библиотек, мой текущий любимый - Underscore (библиотека, предназначенная для работы с jQuery)
Однако, если вы хотите придерживаться jQuery, тогда также есть шаблонный плагин , но он больше не поддерживается.