与方法的问题在http://www.pikachoose.com/how-to-fancybox/说明的是,您绑定的fancybox到当前pikachoose元素self.anchor
。
这种做法,有没有办法知道哪些组图像将属于的fancybox画廊(您需要一个以上的元素共享相同的rel
属性),因为只是一个单一的pikachoose图像:每图像会在.pika-stage
容器内动态切换其href
和src
属性(分别为<a>
和<img>
标签)。
作为一种变通方法,您将需要建造的的fancybox组元素之前你的HTML结构结合pikachoose(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
}
通知我们结合使用.on()
一个click
事件(需要的jQuery V1.7 +)到pikachoose元件self.anchor
使用手动方法$.fancybox([group])
火的fancybox画廊。
此解决方法对fancybox v1.3.4或v2.x同样适用。见DEMO使用V1.3.4,似乎工作,即使IE7罚款;)
来源
2013-04-16 21:39:40
JFK
非常感谢你的解释!新年快乐 :) –