lightbox 2:如何通过javascript动态添加图片

Ner*_*rta 1 html javascript jquery lightbox lightbox2

我有麻烦试图动态地添加图片,因为lightbox2(由LOKESH达喀尔)的存在HTML编码图像文件加载后初始化,并没有在第一时间之后再解析文档.

如果我尝试使用javascript添加新图像(例如将它们添加到正文中),则不会将它们添加到lighbox组中.

官方网站上的文档似乎没有描述任何脚本方法

有经验的人可以帮助我吗?使用jquery的解决方案真的很受欢迎,但我也可以处理好vanilla js.


代码示例:

HTML

<body>
 <div id="container">
  <a href="images/image-2.jpg" data-lightbox="roadtrip">Image #2</a>
  <a href="images/image-3.jpg" data-lightbox="roadtrip">Image #3</a>
  <a href="images/image-4.jpg" data-lightbox="roadtrip">Image #4</a>
 </div>
 <!-- where 'Image #X' = <img src="images/thumb/image-X.jpg>" -->
 <div id="loadmore">load more images</div>
 <script src="path/to/lightbox.js"></script>
 <script>
  /* see below for the script */
 </script>
</body>
Run Code Online (Sandbox Code Playgroud)

JavaScript的

$(function(){
  $('#loadmore').click(function(){
   //ajax request for more images.
   //load them with all the needed properties...
   //then put them into the container:
   var IMG = $('<a href="images/image-10.jpg" data-lightbox="roadtrip">'+
       '<img src="images/small/image-10.jpg">'+
     '</a>');
   //magic here... add IMG to roadtrip lightbox group!!!
   //probably something like lightbox.groups['roadtrip'].add(IMG)
   //but i'm only speculating
   $('#container').append(IMG)
  });
})
Run Code Online (Sandbox Code Playgroud)

Ner*_*rta 8

花了几个小时来测试和阅读代码后,我想出了这个神奇的代码:

//set album values
IMG = $('<a href="...">')
    .attr('data-lightbox','roadtrip')
    .append('<img src="...">')
//lightbox open:
IMG.click(function(){
    lightbox.start($(this));
    return false;
})
Run Code Online (Sandbox Code Playgroud)

一些有用的提示:

  • 不要设置数据$(...).data('lightbox','group'),因为灯箱$('a[data-lightbox]')每次点击链接时都会使用选择器.相反,你应该使用$(...).attr('lightbox','group').

  • lightbox.album 是一个临时变量,您不需要处理.