Fancybox - Ajax图库

pws*_*068 5 javascript ajax jquery fancybox

我有一个自定义图库,用缩略图填充div,每个缩写包含在一个fancybox组中.

当您单击一个(它在fancybox中打开)并且您可以按Prev/Next在第一个"页面"上的图像之间循环.要在页面之间移动,您必须关闭fancybox并更改页面,然后打开新的缩略图.这组新照片是通过ajax检索的.

为了向您展示我正在谈论的内容, http://www.speedcountry.com/mSpeed323/Mazda_MAZDASPEED3

如何使用fancybox切换页面并加载下一组图像?

Mot*_*tie 4

FancyBox 中似乎没有任何内部方法,因此您必须修改插件。我冒昧地做了一个小小的更改并发布了一个演示- 在演示中,在 FancyBox 弹出窗口中打开任何图像,然后按键盘上的 Enter 键。它将把所有图像加载到图库中并从第一个开始。

修改了887行,然后在892之前插入一行:

$.fancybox.pos = function(pos, array) { // array parameter added
    if (busy) {
        return;
    }

    if (array) { currentArray = array; } // new line
Run Code Online (Sandbox Code Playgroud)

因此,基本上添加“数组”作为函数参数,然后添加该if (array)...行。

要使用它,只需pos在 FancyBox 打开时调用该函数即可。这是演示中的代码:

// pos( index of image, jQuery object of gallery objects )
$.fancybox.pos(0, $('#examples a[id]'));
Run Code Online (Sandbox Code Playgroud)

*注意:最初我只是使用它$('a[id]'),它包含精美盒子内的图像。


更新:就像你说的,你正在使用 ajax 加载更多图像......我猜你只是得到一个图像 url 列表。从 url 开始,您需要形成这些图像并将其添加到页面的隐藏区域中:

<div id="ajax-loaded" style="display:none">
 <a href="#" title="image1 title"><img src="image1.jpg"></a>
 <a href="#" title="image2 title"><img src="image2.jpg"></a>
 ...
 <a href="#" title="imageN title"><img src="imageN.jpg"></a>
</div>
Run Code Online (Sandbox Code Playgroud)

然后你可以将 jquery 对象数组作为第二个参数传递$('#ajax-content img')$.fancybox.pos函数,并从第一个图像(零)开始

// ajax complete, add images to gallery
$.fancybox.pos( 0, $('#ajax-loaded a') );
Run Code Online (Sandbox Code Playgroud)

更新#2:在我发现如果你想包含图像标题是有必要的,我将上面的 HTML 包装在链接和 jQuery 选择器中。