2

我的问题是我有一个大画廊,不应该在第一页加载时完全加载。所以我加载了 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()获取下一张图片:)

之后我调用 loadFancybox() 以便所有新图像都属于图库。但是在我重新打开fancybox之前它们不包括在内......

4

2 回答 2

4

好的,只是为了好玩,基于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 的组中。

不是一个完美的解决方案,但它有效,请参阅此处的演示;您将在页面加载时看到三个缩略图。一旦您打开 fancybox 并导航到最后一个项目,文档中将添加三个缩略图,以及 fancybox 库中的 3 个相应图像。

另请注意,您必须var done = false;在脚本开始时进行初始化。

顺便说一句,忘记功能loadFancybox(),不需要。

于 2013-03-19T18:13:51.577 回答
0

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

于 2013-03-19T13:39:07.767 回答