以编程方式打开 lightgallery.js

Jac*_*son 2 javascript jquery lightgallery

所以我使用https://sachinchoolur.github.io/lightgallery.js/作为我的画廊,这很棒。

当用户单击并图像时,它会打开并且一切正常。

<div id="lightgallery">
  <a href="img/img1.jpg">
      <img src="img/thumb1.jpg" />
  </a>
  <a href="img/img2.jpg">
      <img src="img/thumb2.jpg" />
  </a>
  ...
</div>

<script type="text/javascript">
    lightGallery(document.getElementById('lightgallery')); 
</script>
Run Code Online (Sandbox Code Playgroud)

但是,我有一个边缘情况,我希望用户能够按下页面上的另一个图像来打开图库。

让我们假装这是一个标签

<a id="magic_start" href="">
Run Code Online (Sandbox Code Playgroud)

我以为我能够做到这一点:

$("#magic_start").click(function(e) {
  e.preventDefault();
  $("#lightgallery li:first-child a").trigger();
});
Run Code Online (Sandbox Code Playgroud)

我也试过 click() 和 trigger('click') 但它们不起作用。

我认为因为 lightgallery.js 是它自己的人,可以这么说。

但它什么也不做。没有错误,但什么也不做。

有什么建议?

编辑:

我目前的解决方法是...

window.location.href = window.location.href + "#lg=1&slide=0";
location.reload();
Run Code Online (Sandbox Code Playgroud)

但是由于必须重新加载页面,这需要从 UX 中获取方法。

Gar*_*mas 8

trigger函数需要在img元素上调用,而不是在外部a元素上调用。

lightGallery(document.getElementById('lightgallery'));

$("#magic_start").on("click", () => {
    $("#lightgallery a:first-child > img").trigger("click");
});
Run Code Online (Sandbox Code Playgroud)
<!-- lightgallery and jQuery vendor CSS/JS -->
<link rel="stylesheet" href="https://cdn.rawgit.com/sachinchoolur/lightgallery.js/master/dist/css/lightgallery.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.rawgit.com/sachinchoolur/lightgallery.js/master/dist/js/lightgallery.js"></script>

<a id="magic_start" href="#">CLICK TO OPEN</a>

<div id="lightgallery">
    <a href="https://via.placeholder.com/350">
        <img src="https://via.placeholder.com/150" />
    </a>
    <a href="https://via.placeholder.com/350">
        <img src="https://via.placeholder.com/150" />
    </a>
</div>
Run Code Online (Sandbox Code Playgroud)