2015-02-07 81 views
0

我使用Blueimp库在网页上显示灯箱。Blueimp gallery在一个页面上实现多次

我可以在页面上显示一个灯箱,但是我想为不同的图像类别(例如 - 节假日,大自然,黑色&白等等)添加多个灯箱。

我可以得到灯箱显示为网页上的独立“行”元素确定。

问题是第二个(或后续)灯箱在点击其中的图像时不能正确打开图像 - 他们只是在浏览器中打开图像而不使用格式,而不是使用图库样式,因为它们应该。

这是正常工作的代码:

</head> 

<body id="page-top" data-spy="scroll" data-target=".navbar-custom"> 

    <nav class="navbar navbar-custom navbar-fixed-top" role="navigation"> 
     <div class="container"> 
      <div class="navbar-header page-scroll"> 
       <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-main-collapse"> 
        <i class="fa fa-bars"></i> 
       </button> 
       <a class="navbar-brand" href="index.html#page-top"> 
        <i class="fa fa-play-circle"></i> <span class="light">Back</span> to Main Page 
       </a> 
      </div> 

      <!-- Collect the nav links, forms, and other content for toggling --> 
      <div class="collapse navbar-collapse navbar-right navbar-main-collapse"> 
       <ul class="nav navbar-nav"> 
        <!-- Hidden li included to remove active class from about link when scrolled up past about section --> 
        <li class="hidden"> 
         <a href="#page-top"></a> 
        </li> 
        <li class="page-scroll"> 
         <a href="index.html#about">About</a> 
        </li> 
        <li class="page-scroll"> 
         <a href="index.html#download">Images</a> 
        </li> 
        <li class="page-scroll"> 
         <a href="index.html#contact">Contact</a> 
        </li> 
       </ul> 
      </div> 
      <!-- /.navbar-collapse --> 
     </div> 
     <!-- /.container --> 
    </nav> 

<section class="gallery"> 
     <div class="gallery-body"> 
      <div class="container"> 
       <div class="row"> 
         <h2>Image Gallery</h2> 
    <!-- The container for the list of example images --> 
    <div id="links"> 

    <a href="images/image-1.jpg" title=""> 
     <img src="images/thumbnails/image-1.jpg" alt=""> 
    </a> 
    <a href="images/image-2.jpg" title=""> 
     <img src="images/thumbnails/image-2.jpg" alt=""> 
    </a> 
    <a href="images/image-3.jpg" title=""> 
     <img src="images/thumbnails/image-3.jpg" alt=""> 
    </a> 
    <a href="images/image-4.jpg" title=""> 
     <img src="images/thumbnails/image-4.jpg" alt=""> 
    </a> 
    <a href="images/image-5.jpg" title=""> 
     <img src="images/thumbnails/image-5.jpg" alt=""> 
    </a> 
    <a href="images/image-6.jpg" title=""> 
     <img src="images/thumbnails/image-6.jpg" alt=""> 
    </a> 
    <a href="images/image-7.jpg" title=""> 
     <img src="images/thumbnails/image-7.jpg" alt=""> 
    </a> 
    <a href="images/image-8.jpg" title=""> 
     <img src="images/thumbnails/image-8.jpg" alt=""> 
    </a> 
    <a href="images/image-9.jpg" title=""> 
     <img src="images/thumbnails/image-9.jpg" alt=""> 
    </a> 
    <a href="images/image-10.jpg" title=""> 
     <img src="images/thumbnails/image-10.jpg" alt=""> 
    </a> 
    <a href="images/image-11.jpg" title=""> 
     <img src="images/thumbnails/image-11.jpg" alt=""> 
    </a> 
    <a href="images/image-1.jpg" title=""> 
     <img src="images/thumbnails/image-1.jpg" alt=""> 
    </a> 

    </div> 

       </div> 



      </div> 
     </div> 

</section> 


    <!-- The Gallery as lightbox dialog, should be a child element of the document body --> 
<div id="blueimp-gallery" class="blueimp-gallery blueimp-gallery-controls"> 
    <div class="slides"></div> 
    <h3 class="title"></h3> 
    <a class="prev">‹</a> 
    <a class="next">›</a> 
    <a class="close">×</a> 
    <a class="play-pause"></a> 
    <ol class="indicator"></ol> 
</div> 


    <!-- Core JavaScript Files --> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
    <script src="http://netdna.bootstrapcdn.com/bootstrap/3.0.3/js/bootstrap.min.js"></script> 
    <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.easing.min.js"></script> 

    <!-- Google Maps API Key - You will need to use your own API key to use the map feature 
    <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCRngKslUGJTlibkQ3FkfTxj3Xss1UlZDA&sensor=false"></script> 
--> 
    <!-- Custom Theme JavaScript --> 
    <script src="js/grayscale.js"></script> 



    <!-- Custom LIGHTBOX JavaScript --> 
    <script src="js/blueimp/blueimp-helper.js"></script> 
<script src="js/blueimp/blueimp-gallery.js"></script> 
<script src="js/blueimp/blueimp-gallery-fullscreen.js"></script> 
<script src="js/blueimp/blueimp-gallery-indicator.js"></script> 
<script src="js/blueimp/blueimp-gallery-video.js"></script> 
<script src="js/blueimp/blueimp-gallery-vimeo.js"></script> 
<script src="js/blueimp/blueimp-gallery-youtube.js"></script> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
<script> 
/*jslint evil: true */ 
/*global window, document*/ 
// Including jQuery via the protocol relative url above works for both http and https. 
// Explicitly including jQuery via https allows running the Gallery demo as local file: 
if (!window.jQuery) { 
    document.write(
     '<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"><\/script>' 
    ); 
} 
</script> 
<script src="js/jquery.blueimp-gallery.js"></script> 
<script src="js/demo.js"></script> 
<script src="js/blueimp-gallery.min.js"></script> 


<script> 
document.getElementById('links').onclick = function (event) { 
    event = event || window.event; 
    var target = event.target || event.srcElement, 
     link = target.src ? target.parentNode : target, 
     options = {index: link, event: event}, 
     links = this.getElementsByTagName('a'); 
    blueimp.Gallery(links, options); 
}; 
</script> 


</body> 

我只是想这下添加其他收藏和我,虽然我可以只添加另一个“行”元素,它会工作。我也尝试再次添加一个画廊部分,但它仍然无法正常工作。它显示在主页面上,但它不能正确打开图像。

希望这是清楚了吗?

感谢

回答

1

好吧,我想通了......

这其中一件事我需要做的:

https://github.com/blueimp/Gallery#container-ids-and-link-grouping

您还需要为每个你想画廊创建单独的脚本显示。所以,如果你有一个名为DIV的图像:

<div id="color"> 

    <a href="images/image-1.jpg" title="" data-gallery="#blueimp-gallery"> 
     <img src="images/thumbnails/image-1.jpg" alt=""> 
    </a>Etc Etc Etc 

你需要一个特定的脚本这个画廊,然后随后的画廊不同的脚本:

<script> 
document.getElementById('color').onclick = function (event) { 
    event = event || window.event; 
    var target = event.target || event.srcElement, 
     link = target.src ? target.parentNode : target, 
     options = {index: link, event: event}, 
     links = this.getElementsByTagName('a'); 
    blueimp.Gallery(links, options); 
}; 
</script> 

<script> 
document.getElementById('polaroid').onclick = function (event) { 
    event = event || window.event; 
    var target = event.target || event.srcElement, 
     link = target.src ? target.parentNode : target, 
     options = {index: link, event: event}, 
     links = this.getElementsByTagName('a'); 
    blueimp.Gallery(links, options); 
}; 
</script> 

这就是我如何得到它反正工作...

+0

Wojciech的回答是最好的。 – RichieHH 2017-09-01 18:42:25

4

你可以做得更好,我也有这个问题。

“jQuery插件设置

的blueimp画廊jQuery插件注册了一个全球性的点击处理程序来打开与画廊收藏夹数据画廊属性链接。

要使用它,请按照灯箱安装指南,但包括jQuery的后的jQuery插件版本替换精缩库脚本,并将其包括:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
<script src="js/jquery.blueimp-gallery.min.js"></script> 

接着,属性数据画廊添加到您的相册链接:

<div id="links"> 
    <a href="images/banana.jpg" title="Banana" data-gallery> 
     <img src="images/thumbnails/banana.jpg" alt="Banana"> 
    </a> 
    <a href="images/apple.jpg" title="Apple" data-gallery> 
     <img src="images/thumbnails/apple.jpg" alt="Apple"> 
    </a> 
    <a href="images/orange.jpg" title="Orange" data-gallery> 
    <img src="images/thumbnails/orange.jpg" alt="Orange"> 
    </a> 
</div> 

从lightbox设置指南中的onclick处理程序不是必需的,可以删除。“

之后,画廊的不同名称只是添加到data-gallery,例如:data-gallery-fruits,它应该工作:d

-1

这是很容易使用jQuery

HTML:

<div class="gallery"> 
    <div><a href="1.jpg"><img src="1.jpg"></a></div> 
    <div><a href="2.jpg"><img src="2.jpg"></a></div> 
</div> 

<div class="gallery"> 
    <div><a href="3.jpg"><img src="3.jpg"></a></div> 
    <div><a href="4.jpg"><img src="4.jpg"></a></div> 
</div> 

JS:

$(document).on('click', '.gallery', function (event) { 
    event = event || window.event; 
    var target = event.target || event.srcElement, 
    link = target.src ? target.parentNode : target, 
    options = {index: link, event: event}, 
    links = this.getElementsByTagName('a'); 
    blueimp.Gallery(links, options); 
}); 

希望对您有所帮助

+0

查看Wojciech的回答。提供的jquery脚本和data-gallery属性的使用是最好的答案。 – RichieHH 2017-09-01 18:43:20