在FancyBox中似乎没有内部方法,因此您需要修改插件。我稍微修改了一下并发布了演示 - 在演示中,打开任何一个在FancyBox弹出窗口中的图像,然后按键盘上的Enter键。它将加载所有图片到画廊中,并从第一个开始。
修改第887行,然后在第892行之前插入一行:
$.fancybox.pos = function(pos, array) {
if (busy) {
return;
}
if (array) { currentArray = array; }
所以,基本上要将“array”作为函数参数添加,然后添加if(array)...
行。
使用时,在FancyBox打开的情况下直接调用pos
函数。这是演示中的代码:
// pos( index of image, jQuery object of gallery objects )
$.fancybox.pos(0, $('#examples a[id]'));
*注意:最初我只使用了$('a[id]')
,这样会包含在fancy box中的图片。
更新:就像你说的那样,你正在使用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')
作为第二个参数传递给 $.fancybox.pos
函数,并从第一张图像(零)开始。
// ajax complete, add images to gallery
$.fancybox.pos( 0, $('#ajax-loaded a') );
更新 #2:在发现包含图像标题是必要的情况下,我在上面的HTML和jQuery选择器中添加了链接。
$.fancybox.pos
,这是一种内部fancybox函数,类似于“转到”图像#...我所做的就是用你自己添加的数组(jQuery对象数组)替换当前数组。 - Mottie