简体   繁体   English

Javascript:如何在动态添加的元素上定位 lightgallery.js

[英]Javascript: How to target lightgallery.js on dynamic added elements

I'm trying to target dynamic added elements to work with lightgallery.js.我正在尝试将动态添加的元素定位为与 lightgallery.js 一起使用。 See the exemple bellow:请参见下面的示例:

    <div id="animated-thumbs" class="page-divs-middle">
        <!-- STATIC EXAMPLE -->
        <div class="col-md-3 col-xs-3 text-nowrap spacer-page-models fit pulsar">
         <a href="assets/img/01.jpg" data-lightbox="image-1">
            <img class="img-responsive img-responsive-center cover" src="assets/img/01.jpg">
         </a>
    </div>
        <div class="col-md-3 col-xs-3 text-nowrap spacer-page-models fit pulsar">
          <a href="assets/img/01.jpg" data-lightbox="image-1">
            <img class="img-responsive img-responsive-center cover" src="assets/img/01.jpg">
            </a>
        </div>               
        <!-- STATIC EXAMPLE -->
    </div>
<script type="text/javascript">
  $(document).ready(function(){
    $('#animated-thumbs').lightGallery({
     thumbnail:true,
     selector: 'a',
     download:false,
     share:false,
     autoplayControls: false,
    });
   })
</script>

The code above is a static example that's demonstrate how to use lightgallery script, this works as expected.上面的代码是一个 static 示例,它演示了如何使用 lightgallery 脚本,这可以按预期工作。 But I'm trying to make the script works adding elements dynamically, like this:但我试图让脚本动态添加元素,如下所示:

<div id="animated-thumbs" class="page-divs-middle">
        <!-- Elements here were dynamically added -->
        
                  
        <!-- Elements here were dynamically added -->
    </div>
<script type="text/javascript">
  $(document).ready(function(){
    $('#animated-thumbs').lightGallery({
     thumbnail:true,
     selector: 'a',
     download:false,
     share:false,
     autoplayControls: false,
    });
   })
</script>

JavaScript JavaScript

var target = $('#animated-thumbs');
target.append('<div class="col-md-3 col-xs-3 text-nowrap spacer-page-models fit pulsar"><a href="assets/img/01.jpg"><img class="img-responsive img-responsive-center cover" src="assets/img/01.jpg"></a></div>');

But it's not working because document was loaded previously.但它不起作用,因为之前加载了文档。 Someone can help me?有人可以帮助我吗?

You need to append html to id="animated-thumbs" before initialising gallery, or reinitialize gallery after appending html.您需要在初始化画廊之前将 append html 设置为id="animated-thumbs" ,或者在附加 html 后重新初始化画廊。 Something like:就像是:

$('#animated-thumbs').lightGallery().destroy(true);

$('#animated-thumbs').append('<div><h3>some html to add</h3></div>');

$('#animated-thumbs').lightGallery({ //params });

Please note that this is just description code and it will not work if you just copy it.请注意,这只是描述代码,如果您只是复制它,它将不起作用。 Check gallery documentation on how to call destroy method (usually they all have it) and apply it to your code.查看有关如何调用destroy 方法的图库文档(通常他们都有它)并将其应用到您的代码中。 Or if there is 'reinit' method you can skip destroy and just reinit gallery after html appending.或者,如果有“重新初始化”方法,您可以跳过销毁并在附加 html 之后重新初始化库。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM