Полагаю, вы только что включили JS-файл Slimbox. Он не будет работать, так как DOM не имеет изображений при загрузке Slimbox, потому что они добавляются впоследствии, а Slimbox работает только для ссылок, которые УЖЕ присутствуют при вызове функции.
Легко добиться того, что вы говорите, с помощью небольшой модификации файла slimbox.js. Вы найдете это в нижней части Slimbox.js:
// AUTOLOAD CODE BLOCK (MAY BE CHANGED OR REMOVED)
if (!/android|iphone|ipod|series60|symbian|windows ce|blackberry/i.test(navigator.userAgent)) {
jQuery(function($) {
$("a[rel^='lightbox']").slimbox({/* Put custom options here */}, null, function(el) {
return (this == el) || ((this.rel.length > 8) && (this.rel == el.rel));
});
});
}
Оберните его внутри функции и просто вызывайте его всякий раз, когда вы динамически меняете DOM (после добавления изображений). Измените код выше на этот:
function loadsb(){
if (!/android|iphone|ipod|series60|symbian|windows ce|blackberry/i.test(navigator.userAgent)) {
$("a[rel^='lightbox']").slimbox({/* Put custom options here */}, null, function(el) {
return (this == el) || ((this.rel.length > 8) && (this.rel == el.rel));
});
} }
Звоните loadsb()
после appendTo('#FBalbum');
РЕДАКТИРОВАТЬ : Поскольку у вас возникли проблемы, позвольте мне сделать это еще проще.
Используйте это как slimbox.js
: http://pastebin.com/8iye0PEB. Я удалил объявление функции из этого файла, добавлю его в JS на главной странице.
Теперь я вижу из включенного вами JS, на объект Jquery не ссылается $
, на него ссылается jQuery. так что теперь ваша главная страница JS будет:
<script>
//Function to load SlimBox. PS: I'm refrencing the jQuery object by "jQuery" and not $ sign because of your markup
function loadsb(){
if (!/android|iphone|ipod|series60|symbian|windows ce|blackberry/i.test(navigator.userAgent)) {
jQuery("a[rel^='lightbox']").slimbox({/* Put custom options here */}, null, function(el) {
return (this == el) || ((this.rel.length > 8) && (this.rel == el.rel));
});
} }
jQuery(document).ready(function() {
var AlbumID = "163187497033669";
var graph = "https://graph.facebook.com/" + AlbumID + "/photos?callback=?";
jQuery.getJSON(graph, function(data) {
var albumItem = [];
for(var key in data){
for(var key2 in data[key]){
val2=data[key][key2];
if(typeof(val2.source)!="undefined"){
albumItem.push(
'<li><a class="imageLink" rel="lightbox" href="' + val2.source + '" ><img src="' + val2.picture + '"/></a></li>'
);
};
};
};
jQuery('<ul />', {
'class': 'album',
html: albumItem.join('')
}).appendTo('#FBalbum');
//Let's now call the function we created above
loadsb();
//Slimbox is now loaded.
});
});
</script>
Кроме того, обратите внимание: теперь, когда нам нужно вручную загрузить slimbox, он не будет работать, просто включив файл JS на страницу. вам придется использовать объявление Function и вызывать всякий раз, когда вы хотите загрузить SB. (или просто переместите объявление functon в файл slimbox.js и вызовите его один раз в самом файле.)