繁体   English   中英

如何在 AJAX 加载的内容上使用 Lightbox

[英]How to use Lightbox on AJAX loaded content

我正在使用 Boostrap 5 和这个灯箱库https://trvswgnr.github.io/bs5-lightbox/

在正常加载的页面上工作正常,但不会在 AJAX 加载的内容上加载。

我已尝试使用此代码使其与 AJAX 一起使用,但它不起作用。

$(document).on('click', '[data-toggle="lightbox"]', function(event) {
    event.preventDefault();
    $(this).Lightbox();
});

它返回了这个错误:

未捕获的类型错误:$(...).Lightbox 不是 function

如果您使用的是 vanilla JS 版本,则该脚本仅将事件处理程序添加到脚本加载时存在的具有data-toggle="lightbox"属性的元素,因此通过 AJAX 调用加载的新元素不起作用。

如果您能够使用 Node(或者不使用带有 RequireJS 之类的模块加载器的节点),则可以根据文档在每个新元素加载时实例化一个新的 Lightbox:

$(document).on('click', '[data-toggle="foo"]', function (event) {
    event.preventDefault();
    const el = $(this);
    const lightbox = new Lightbox(el);
    lightbox.show();
});

请注意,此处的正确语法是从元素创建一个新的灯箱,然后使用lightbox.show() ... $(this).Lightbox()将永远无法工作。

暂无
暂无

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

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