FancyBox 中似乎没有任何内部方法,因此您必须修改插件。我冒昧地做了一个小小的改变并发布了demo http://jsfiddle.net/Mottie/UagVd/1/- 在演示中,在 FancyBox 弹出窗口中打开任何图像,然后按键盘上的 Enter。它将把所有图像加载到图库中并从第一个开始。
修改了887行,然后在892之前插入一行:
$.fancybox.pos = function(pos, array) { // array parameter added
if (busy) {
return;
}
if (array) { currentArray = array; } // new line
所以,基本上添加“数组”作为函数参数,然后添加if (array)...
line.
要使用它,只需调用pos
FancyBox 打开时起作用。这是演示中的代码:
// pos( index of image, jQuery object of gallery objects )
$.fancybox.pos(0, $('#examples a[id]'));
*注意:最初我只是使用$('a[id]')
它包括精美盒子内的图像。
Update:就像你说的,你正在使用 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>
然后你可以创建一个 jquery 对象数组$('#ajax-content img')
to the $.fancybox.pos
函数作为第二个参数,并从第一个图像(零)开始
// ajax complete, add images to gallery
$.fancybox.pos( 0, $('#ajax-loaded a') );
更新#2:在我发现如果你想包含图像标题是必要的之后,我将上面的 HTML 包装在链接和 jQuery 选择器中。