问题
When I open group of images with fancybox "Index of start", I have a problem.
//"img[2]" it's img with rel=2
When I click on img, it's opens. After load, when I click "prev Img" - it's working normally, but on click "next img" - Gallery start playing from img[0]. using fancyBox v2.0.3. in action: http://youtu.be/1dii1qC9cOM
HTML:
<ul class="gallery">
<li>
<a rel="0" data-fancybox-group="PHOTOGALLERY"> <img alt="" src="1.jpg"> </a>
</li>
<li>
<a rel="1" data-fancybox-group="PHOTOGALLERY"> <img alt="" src="2.jpg"> </a>
</li>
<li>
<a rel="2" data-fancybox-group="PHOTOGALLERY"> <img alt="" src="3.jpg"> </a>
</li>
<li>
<a rel="3" data-fancybox-group="PHOTOGALLERY"> <img alt="" src="4.jpg"> </a>
</li>
</ul>
JS:
// Using group of images, received from ajax
var hrefList = new Array;
for (var i in data) {
hrefList[i] = data[i].PATH
}
ul.find('a').live('click',function(e){
e.preventDefault();
var himself = $(this);
$.fancybox( hrefList, {
'index': himself.attr('rel')
});
});
回答1:
You don't need to use .live() with fancybox v2.x since it already handles present and future (dynamically added) elements. Additionally fancybox uses either data-fancybox-group or rel to group images within a gallery of existing elements but since you are creating a manual gallery from array, you don't actually need either of them so you html can be as simple like (even you wouldn't need the <a> tag but let's leave it like that):
<ul class="gallery">
<li>
<a><img alt="" src="1.jpg" /></a>
</li>
<li>
<a><img alt="" src="2.jpg" /></a>
</li>
<li>
<a><img alt="" src="3.jpg" /></a>
</li>
<li>
<a><img alt="" src="4.jpg" /></a>
</li>
</ul>
Then, in order to get the right index for each thumbnail you may tweak your js like:
var hrefList = new Array;
for (var i in data) {
hrefList[i] = data[i].PATH
}
$("ul.gallery a").each(function(e){
$(this).click(function(){
$.fancybox( hrefList, {
index: e,
type: 'image'
}); //fancybox
});//click
});//each
that will always give you the gallery that starts with the right index.
Notice that you don't need preventDefault() either since there isn't any href set for each anchor
来源:https://stackoverflow.com/questions/9683826/fancybox-when-i-open-group-of-images-and-click-on-next-with-using-start-index