Когда вы выполняете итерацию, используя each
, вы добавляете <div class="album">
на каждую итерацию:
var album = $('<div class="album"></div>').appendTo( $(pageLink).parent());
И затем прямо под этим:
$('.album').load(//...
На первомитерация, $('.album').length
будет одна, на второй будет две и т. д. Последняя итерация в итоге вызовет .load('test.html .prettyphotoalbum p > *', ...
для всех трех <div class="album">
добавленных вами элементов.
Я думаюВы хотите просто связать load
с тем, что вы только что создали:
// Use album rather than $('.album')
album.load(this.href+' .prettyphotoalbum p > *',null,function(){
album.children('a').attr('rel','prettyPhoto['+albumTitle+']');
});
Кроме того, вам нужен только один вызов .live
, поэтому переместите это:
$('a[rel^="prettyPhoto"]').live("click",function() {
$.prettyPhoto.open($(this).attr("href"),"","");
return false;
});
за пределы.each
.Так что-то вроде этого должно работать лучше:
if($('div.prettyphotothumb').length > 0) {
$('div.prettyphotothumb a').each(function() {
var pageLink = $(this);
var albumTitle = $(pageLink).text();
var album = $('<div class="album"></div>').appendTo($(pageLink).parent());
album.load(this.href+' .prettyphotoalbum p > *', null, function() {
album.children('a').attr('rel', 'prettyPhoto[' + albumTitle + ']');
});
});
$('a[rel^="prettyPhoto"]').live("click", function() {
$.prettyPhoto.open($(this).attr("href"), "", "");
return false;
});
}