我的问题是我有一个大型画廊,不应在第一页加载时完全加载。因此,我加载了50张图像中的10张,并向其中添加了fancybox。当用户单击下一步按钮时,第11张图像应通过Ajax加载并附加到图库容器中。
问题是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() 获取下一张图片:)
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 HERE ;您会在页面加载时看到三个缩略图。打开fancybox并导航到最后一项后,将在文档中添加另外三个缩略图,并在fancybox画廊中添加3个对应的图像。
还要注意,您必须var done = false;在脚本开始时进行初始化。
var done = false;
顺便说一句,忘了功能loadFancybox(),不需要。
loadFancybox()