【问题标题】:Javascript Lightbox Effects not working anymore after jquery .load()在 jquery .load() 之后,Javascript 灯箱效果不再起作用
【发布时间】:2015-09-30 15:34:40
【问题描述】:

请帮我解决以下问题。我花了一整天的时间在网上搜索修复并试图让它工作但没有成功。

我有这个菜单链接(我点击这个链接从 #afisare_continut div 中的 foto.php 加载代码,在 about.php 中找到):

<li onclick="foto()">
   <a data-toggle="tab" href="#foto" id="submenu7">
   <div>
      Foto
   </div></a>
</li>

我在上面的 onclick 事件中附加了这个 jquery 函数:

function foto() {
                $('div[class^="tab-pane"]').hide();
                 $("#afisare_continut").load("foto.php");
            }

Div 类 "tab-pane" 它将是以前从不同文件加载的代码。 我在加载 foto.php 文件时有这个容器 div:

&lt;div class="tab-content continut_tab container clearfix" id="afisare_continut"&gt; &lt;/div&gt;

这是 foto.php 代码:

<div id="fotoechipa" class="masonry-thumbs col-6" data-big="3" data-lightbox="gallery" style="margin-right: -1px; position: relative; height: 429px;">
      <a href="http://canvashtml-cdn.semicolonweb.com/images/portfolio/full/1.jpg" data-lightbox="gallery-item" style="width: 190px; position: absolute; left: 0px; top: 0px;"><img class="image_fade" src="http://canvashtml-cdn.semicolonweb.com/images/portfolio/4/1.jpg" alt="Gallery Thumb 1" style="opacity: 1;"></a>
       <a href="http://canvashtml-cdn.semicolonweb.com/images/portfolio/full/2.jpg" data-lightbox="gallery-item" style="width: 190px; position: absolute; left: 190px; top: 0px;"><img class="image_fade" src="http://canvashtml-cdn.semicolonweb.com/images/portfolio/4/2.jpg" alt="Gallery Thumb 2"></a>
       <a href="http://canvashtml-cdn.semicolonweb.com/images/portfolio/full/3.jpg" data-lightbox="gallery-item" style="width: 380px; position: absolute; left: 380px; top: 0px;"><img class="image_fade" src="http://canvashtml-cdn.semicolonweb.com/images/portfolio/4/3.jpg" alt="Gallery Thumb 3" style="opacity: 1;"></a>
       <a href="http://canvashtml-cdn.semicolonweb.com/images/portfolio/full/4.jpg" data-lightbox="gallery-item" style="width: 190px; position: absolute; left: 760px; top: 0px;"><img class="image_fade" src="http://canvashtml-cdn.semicolonweb.com/images/portfolio/4/4.jpg" alt="Gallery Thumb 4"></a>
       <a href="http://canvashtml-cdn.semicolonweb.com/images/portfolio/full/5.jpg" data-lightbox="gallery-item" style="width: 190px; position: absolute; left: 950px; top: 0px;"><img class="image_fade" src="http://canvashtml-cdn.semicolonweb.com/images/portfolio/4/5.jpg" alt="Gallery Thumb 5"></a>
       <a href="http://canvashtml-cdn.semicolonweb.com/images/portfolio/full/6.jpg" data-lightbox="gallery-item" style="width: 190px; position: absolute; left: 0px; top: 143px;"><img class="image_fade" src="http://canvashtml-cdn.semicolonweb.com/images/portfolio/4/6.jpg" alt="Gallery Thumb 6" style="opacity: 1;"></a>
       <a href="http://canvashtml-cdn.semicolonweb.com/images/portfolio/full/7.jpg" data-lightbox="gallery-item" style="width: 190px; position: absolute; left: 190px; top: 143px;"><img class="image_fade" src="http://canvashtml-cdn.semicolonweb.com/images/portfolio/4/7.jpg" alt="Gallery Thumb 7"></a>
       <a href="http://canvashtml-cdn.semicolonweb.com/images/portfolio/full/9.jpg" data-lightbox="gallery-item" style="width: 190px; position: absolute; left: 760px; top: 143px;"><img class="image_fade" src="http://canvashtml-cdn.semicolonweb.com/images/portfolio/4/9.jpg" alt="Gallery Thumb 9"></a>
       <a href="http://canvashtml-cdn.semicolonweb.com/images/portfolio/full/10.jpg" data-lightbox="gallery-item" style="width: 190px; position: absolute; left: 950px; top: 143px;"><img class="image_fade" src="http://canvashtml-cdn.semicolonweb.com/images/portfolio/4/10.jpg" alt="Gallery Thumb 10"></a>
       <a href="http://canvashtml-cdn.semicolonweb.com/images/portfolio/full/11.jpg" data-lightbox="gallery-item" style="width: 190px; position: absolute; left: 380px; top: 285px;"><img class="image_fade" src="http://canvashtml-cdn.semicolonweb.com/images/portfolio/4/11.jpg" alt="Gallery Thumb 14"></a>
       <a href="http://canvashtml-cdn.semicolonweb.com/images/portfolio/full/12.jpg" data-lightbox="gallery-item" style="width: 190px; position: absolute; left: 570px; top: 285px;"><img class="image_fade" src="http://canvashtml-cdn.semicolonweb.com/images/portfolio/4/12.jpg" alt="Gallery Thumb 12"></a>
       <a href="http://canvashtml-cdn.semicolonweb.com/images/portfolio/full/8.jpg" data-lightbox="gallery-item" style="width: 190px; position: absolute; left: 0px; top: 286px;"><img class="image_fade" src="http://canvashtml-cdn.semicolonweb.com/images/portfolio/4/8.jpg" alt="Gallery Thumb 13" style="opacity: 1;"></a>
       <a href="http://canvashtml-cdn.semicolonweb.com/images/portfolio/full/12-1.jpg" data-lightbox="gallery-item" style="width: 190px; position: absolute; left: 190px; top: 286px;"><img class="image_fade" src="http://canvashtml-cdn.semicolonweb.com/images/portfolio/4/12-1.jpg" alt="Gallery Thumb 15"></a>
       <a href="http://canvashtml-cdn.semicolonweb.com/images/portfolio/full/6-1.jpg" data-lightbox="gallery-item" style="width: 190px; position: absolute; left: 760px; top: 286px;"><img class="image_fade" src="http://canvashtml-cdn.semicolonweb.com/images/portfolio/4/6-1.jpg" alt="Gallery Thumb 16"></a>
       <a href="http://canvashtml-cdn.semicolonweb.com/images/portfolio/full/6-2.jpg" data-lightbox="gallery-item" style="width: 190px; position: absolute; left: 950px; top: 286px;"><img class="image_fade" src="http://canvashtml-cdn.semicolonweb.com/images/portfolio/4/6-2.jpg" alt="Gallery Thumb 12-1"></a>
</div>

`

您可以在以下链接中看到从 foto.php 加载的代码应该如何工作。转到此链接并单击图像并查看灯箱效果:click here

好吧,问题在于,在我使用 Jquery .load() 方法从主文件“about.php”中的“foto.php”(在#afisare_continut div),LighBox 效果将不再起作用。当我单击图像时,它只会将我发送到完整图像的链接,而不是向我显示灯箱。但是,如果在加载 foto.php 的主/初始文件(about.php)中插入图库图像代码,则灯箱效果会起作用。 Lightbox javascript 插件是:&lt;script src="js/plugins.js" type="text/javascript"&gt;&lt;/script&gt;,它包含在主文件“about.php”的标题中。可以找到plugins.js的代码:here

似乎 plugins.js 中的 Lightbox 代码不适用于 foto.php 文件中的 Gallery Images 代码(使用 .load() 方法加载)。仅当 Gallery Images 代码已经在“about.php”中时才适用。

请帮助我使 Javascript Lightbox 插件在 foto.php 加载的代码上工作。

【问题讨论】:

  • 请显示你用来附加灯箱的JavaScript
  • 给你:[链接] (pastebin.com/pb13mF8J)
  • 看起来您正在使用 magnific Popup。这里有很多文档:dimsemenov.com/plugins/magnific-popup/documentation.html 关于 API。我认为您的问题是添加新图像后需要重新初始化。看看这个方法 magnificPopup.updateItemHTML();这可能是您正在寻找的东西。请发布您用于初始化灯箱的任何 javascript,因为这将有助于调试您的问题。
  • 我不使用任何 javascript 初始化程序,就好像我将 data-lightbox="gallery" 放入 div 并将 data-lightbox="item 放入
  • 在这种情况下您需要添加 javascript,查看我的答案。这样做的原因是您一直使用的自动初始化仅在页面首次加载时有效。

标签: javascript jquery lightbox


【解决方案1】:

你应该在加载后初始化灯箱,把你的加载函数改成这样

function foto() {
    $('div[class^="tab-pane"]').hide();
    $("#afisare_continut").load("foto.php",
        /* add callback to load to initialize magnificPopup */
        function(){
            /*initialize magnificPopup*/
            $('#fotoechipa').magnificPopup({
                delegate: 'a', 
                type: 'image',
                /*depending on your needs you may have to add the following line*/
                gallery:{enabled:true}
           });
        });
    }

弹出方法的初始化方式取自here

【讨论】:

  • 我实现了你的代码,现在 foto.php 不再加载到 about.php 中了。
  • @CostelFlorin 是否在控制台中出现任何错误?可能是某个地方的小语法错误。
  • 我刚刚检查了控制台,我看到了 404 错误,因为我放置了错误的文件位置进行加载。你的代码就像一个魅力!非常感谢!
猜你喜欢
  • 1970-01-01
  • 2013-06-02
  • 2011-09-30
  • 1970-01-01
  • 2012-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-24
相关资源
最近更新 更多