2015-02-07 65 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

相關問題