【问题标题】:Magnific PopUp not Working with the Dynamically Added ElementsMagnific PopUp 不适用于动态添加的元素
【发布时间】:2017-06-15 09:16:19
【问题描述】:

我们正在使用 Magnific 库在我们的网站中显示弹出窗口。除了一件事,一切都进展顺利。

当我们动态添加元素时,弹出框不适用于动态添加的元素。你能帮我如何绑定动态添加元素的点击事件以显示弹出窗口吗?这是我的代码如下:

`<a id="del-vis-archive-new-{{$request->id}}" href="#delete-visitor-archive" data-id="{{$request->id}}" class="popup-form-delete-visitor-archive" style="color:red;"><i style="color:red; text-align: right;" class="hi hi-trash"></i></a>

var PopupDelVisArchive = function() {
$('.popup-form-delete-visitor-archive').magnificPopup({
    type: 'inline',
    preloader: false,
    focus: '#name',
    callbacks: {
        open: function() {
            var dataId = $(this.st.el).attr('data-id');
            $("#btn").attr('data-id', dataId);
        }
    }
});

}

$(document).on( 'init.dt, draw.dt', function ( e, settings ) {
    PopupDelVisArchiv();
});`

该类负责显示弹出窗口 但它不适用于动态添加的元素。

换句话说,点击事件并没有在 DOM 中注册新添加的元素。

【问题讨论】:

    标签: javascript laravel-5 magnific-popup magnification-api


    【解决方案1】:

    在 dom 中加载后,您需要将弹出窗口绑定到每个新元素。这意味着一旦 dom 准备好,就为每个新元素调用 PopupDelVisArchiv();

    【讨论】:

    • 如果我调用该方法,我会得到这个:plugins.js:359 Uncaught TypeError: b.find is not a function at m.fn.init.&lt;anonymous&gt; (plugins.js:359) at Function.each (jquery-1.11.2.min.js:2) at o._parseMarkup (plugins.js:359) at o.getInline (plugins.js:359) at o.updateItemHTML (plugins.js:359) at open (plugins.js:359) at o._openClick (plugins.js:359) at HTMLDivElement.c (plugins.js:359) at HTMLDivElement.dispatch (jquery-1.11.2.min.js:3) at HTMLDivElement.r.handle (jquery-1.11.2.min.js:3)
    • 我可能是因为您正在重新绑定到弹出窗口已经绑定到的元素。确保您仅单独绑定到新元素。