http://www.pikachoose.com/how-to-fancybox/中解释的方法的问题是您将 fancybox 绑定到当前pikachoose元素self.anchor
。
使用这种方法,没有办法知道哪组图像将属于一个 fancybox 画廊(您需要多个元素共享相同的rel
属性),因为只有一个pikachoose图像:每个图像都显示动态切换它href
和容器内的src
属性(<a>
和<img>
标签) 。.pika-stage
作为一种解决方法,您需要在将 html 结构绑定到pikachoose之前构建 fancybox 元素组(pikachoose将修改 DOM 结构)
1)。所以有这个html结构:
<div class="pikachoose">
<ul id="pikame">
<li>
<a title="one" href="image01.jpg" id="single_1"><img alt="" src="thumb01.jpg" /></a>
</li>
<li>
<a title="two" href="image02.jpg" id="single_2"><img alt="" src="thumb02.jpg" /></a>
</li>
<li>
<a title="three" href="image03.jpg" id="single_3"><img alt="" src="thumb03.jpg" /></a>
</li>
</ul>
</div>
2)。使用此脚本创建遍历每个锚点的 fancybox 元素组:
var fancyGallery = []; // fancybox gallery group
$(document).ready(function () {
$("#pikame").find("a").each(function(i){
// buidl fancybox gallery group
fancyGallery[i] = {"href" : this.href, "title" : this.title};
});
}); // ready
3)。然后将pikachoose绑定到同一个选择器#pikame
。您可以使用该.end()
方法在第一个减速选择器上执行此操作,而无需复制它;)
var fancyGallery = []; // fancybox gallery group
$(document).ready(function () {
// build fancybox group
$("#pikame").find("a").each(function(i){
// buidl fancybox gallery
fancyGallery[i] = {"href" : this.href, "title" : this.title};
}).end().PikaChoose({
autoPlay : false, // optional
// bind fancybox to big images element after pikachoose is built
buildFinished: fancy
}); // PikaChoose
}); // ready
请注意,我们使用了pikachoose选项buildFinished: fancy
,当我们单击大图像时,它实际上会触发 fancybox 库。
4)。这是功能:
var fancy = function (self) {
// bind click event to big image
self.anchor.on("click", function(e){
// find index of corresponding thumbnail
var pikaindex = $("#pikame").find("li.active").index();
// open fancybox gallery starting from corresponding index
$.fancybox(fancyGallery,{
// fancybox options
"cyclic": true, // optional for fancybox v1.3.4 ONLY, use "loop" for v2.x
"index": pikaindex // start with the corresponding thumb index
});
return false; // prevent default and stop propagation
}); // on click
}
请注意,我们click
使用.on()
(需要 jQuery v1.7+)将事件绑定到pikachoose元素self.anchor
,以使用手动方法触发 fancybox 库$.fancybox([group])
。
此解决方法同样适用于 fancybox v1.3.4 或 v2.x。请参阅使用 v1.3.4 的演示,即使使用 IE7 似乎也可以正常工作;)