我正在使用Osvaldas Valutis的优秀imagelightbox.js脚本(http://osvaldas.info/image-lightbox-responsive-touch-friendly)。它工作正常,但它不允许我将一堆图像分成同一页面内的单独画廊(它迭代所有图像)。
我希望页面中的所有图像都具有相同的数据属性(data-imagelightbox =“b”),以便它们以相同的方式显示,但找到一种方法将它们分组到不同的库中,所以当您打开一个属于3的图库的图像时,它只迭代这3个图像,然后您可以关闭此图库,然后打开下一个图库。
<div class="gallery-1">
<a href="images/big/a-1.png" data-imagelightbox="b" class="gal-1">thumb</a>
<a href="images/big/a-2.png" data-imagelightbox="b" class="gal-1">thumb</a>
<a href="images/big/a-3.png" data-imagelightbox="b" class="gal-1">thumb</a>
</div>
<div class="gallery-2">
<a href="images/big/b-1.png" data-imagelightbox="b" class="gal-2">thumb</a>
<a href="images/big/b-2.png" data-imagelightbox="b" class="gal-2">thumb</a>
<a href="images/big/b-3.png" data-imagelightbox="b" class="gal-2">thumb</a>
</div>
我认为最好的方法是使用不同的选择器将图像分成画廊,例如:
var galleries = [ '.gal-1', '.gal-2', '.gal-3', '.gal-4' ];
$.each( galleries, function()
{
$( selector ).imageLightbox();
});
但是上面的代码不起作用(它会抛出错误“未定义的选择器”)并继续以完整的顺序打开上面的6个图像,而不是将它们分成两个不同的集合......
关于如何做到这一点的任何想法?
谢谢!
答案 0 :(得分:1)
这个方法确实有效,以防万一其他人遇到同样的问题:
var galleries = [ '.animals', '.flowers', '.trees', '.birds' ]; $.each( galleries,
function() { $( selector ).imageLightbox(); });
答案 1 :(得分:0)
早期答案已删除
修改强>
在研究了demo page之后,看起来通过在集合上调用data-imagelightbox
之前为每个图库指定.imageLightbox()
的值来形成单独的图库,这有点疯狂但是哎浩!
您可以在HTML中设置data-imagelightbox
值,但在javascript中可能更容易,如下所示:
$(".gallery-1 a").data('imagelightbox', 'a').imageLightbox();
$(".gallery-2 a").data('imagelightbox', 'b').imageLightbox();
$(".gallery-3 a").data('imagelightbox', 'c').imageLightbox();
$(".gallery-4 a").data('imagelightbox', 'd').imageLightbox();
因此:
class="gal-1"
,class="gal-2"
等未使用且可以删除。data-imagelightbox="b"
属性,可以将其删除。答案 2 :(得分:0)
我对此插件有同样的问题。我想创建3个具有相同数据属性的图库。每个图库都有一个缩略图可以打开多个图像。
我对每个画廊做了什么:
<div class="gallery1">
<a href="/1.jpg" rel="group1" data-imagelightbox="f">
<img src="images/gallery1.jpg">
</a>
<a href="/2.jpg" rel="group1" data-imagelightbox="f">
<img style="display: none;" src="" alt="Example"/> /* This helped find the image */
</a>
</div>
在javascript中我复制了“f”的相同功能,但是将其更改为新的字母“x”,依此类推。每个图库现在可以独立工作。
希望这有帮助
答案 3 :(得分:0)
这是我的解决方案,并且工作得非常好, 我希望这可以帮助别人。
我在灯箱配置后把它放在我的JS脚本中:
var dataSelector = '';
$(GALLERY_CONTAINER_SELECTOR).each(function(index, el) {
dataSelector = $(this).find(IMAGE_ANCHOR_SELECTOR).attr('data-imagelightbox');
var selector = 'a[data-imagelightbox="' + dataSelector + '"]';
var instance = $(selector).imageLightbox({
onStart: function() { overlayOn(); closeButtonOn( instance ); },
onEnd: function() { overlayOff(); captionOff(); closeButtonOff(); activityIndicatorOff(); },
onLoadStart: function() { captionOff(); activityIndicatorOn(); },
onLoadEnd: function() { captionOn(); activityIndicatorOff(); }
});
});
HTML看起来像:
<div class="GALLERY_CONTAINER_SELECTOR">
<a class="IMAGE_ANCHOR_SELECTOR" href="IMAGE_URL_1" data-imagelightbox="YOUR_GALLERY_NAME">IMAGE_1</a>
<a class="IMAGE_ANCHOR_SELECTOR" href="IMAGE_URL_2" data-imagelightbox="YOUR_GALLERY_NAME">IMAGE_2</a>
<a class="IMAGE_ANCHOR_SELECTOR" href="IMAGE_URL_3" data-imagelightbox="YOUR_GALLERY_NAME">IMAGE_3</a>
<!-- Add as many images as needed -->
</div>