通过Ajax加载下一个图像并添加到Fancybox

我的问题是我有一个大型图库,不应该在第一页加载时完全加载。 所以我加载了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才包括它们……

好的,只是为了好玩,基于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 ; 您将在页面加载时看到三个缩略图。 打开fancybox并导航到最后一项后,将在文档中添加三个缩略图,并将3个相应的图像添加到fancybox库中。

另请注意,您必须初始化var done = false; 在你的剧本开始。

顺便说一下,忘记函数loadFancybox() ,不需要。

尝试调用.fancybox(); 动态加载图像后再次