我的问题是我有一个大型图库,不应该在第一页加载时完全加载。 所以我加载了50个图像中的10个并添加了fancybox。 当用户单击下一个按钮时,应通过Ajax加载第11个图像并附加到图库容器。
问题是fancybox在第10张图片处停止,因为它不知道动态加载的图像。
如何将动态加载的图像添加到fancybox2?
目前我有这个:
function loadFancybox() {
$('a.lightbox').fancybox({
helpers: {
overlay: {
css: {
'background': 'rgba(0,0,0,0.8)'
}
}
},
beforeLoad: function() {
this.title = $(this.element).data('title');
ajaxGetNextImages();
loadFancybox();
},
loop: false
});
}
loadFancybox();
ajaxGetNextImages()
获取下一张图片:)
之后我调用loadFancybox()以便所有新图像都属于图库。但是直到我重新打开fancybox才会包含它们......
答案 0 :(得分:3)
好的,只是为了好玩,并根据此imran-a问题的GitHub评论,这是您的黑客解决方案:
$(".fancybox").fancybox({
loop: false,
beforeLoad: function () {
if ((this.index == this.group.length - 1) && !done) {
ajaxGetNextImages();
done = true;
this.group.push(
{ href: "images/04.jpg", type: "image", title: "Picture 04", isDom: false },
{ href: "images/05.jpg", type: "image", title: "Picture 05", isDom: false },
{ href: "images/06.jpg", type: "image", title: "Picture 06", isDom: false }
); // push
} // if
} // beforeLoad
}); // fancybox
注意除了调用ajaxGetNextImages()
(将新图像放入文档流程)之外,我还必须(手动)推送新手中的fancybox组内的图像。
不是一个完美的解决方案,但它有效,请参阅 DEMO HERE ;您将在页面加载时看到三个缩略图。打开fancybox并导航到最后一项后,将在文档中添加三个缩略图,并将3个相应的图像添加到fancybox库中。
另请注意,您必须在脚本开头初始化var done = false;
。
loadFancybox()
,不需要。
答案 1 :(得分:0)
在动态加载图片后尝试再次调用.fancybox();