如何访问弹出定义中的调用对象?

How can I access the calling object in the popup definition?

提问人:froadie 提问时间:5/28/2015 最后编辑:Communityfroadie 更新时间:5/29/2015 访问量:314

问:

使用 Magnific Popup,我想访问调用对象/链接的数据属性,以便我可以使用 POST 将其传递到弹出窗口。 代码:

$('.editRecord').magnificPopup({
    type: 'ajax',
    preloader: false,
    ajax: {
        settings: {
            method: "POST",
            data: {
                recordID: $(this).data("recordid"),
                field1: $(this).data("field1"),
                // similar with the rest of the fields
            }
        }
    }
});

这不起作用,因为似乎实际上引用了文档对象。$(this)

我找到了这个问题并尝试了答案中的所有建议,但似乎都不起作用,因为这不是在回调中,而是在设置中。尝试过:

recordID: $.magnificPopup.instance.st.el.data("recordid")

recordID: $.magnificPopup.instance.currItem.el[0].data("recordid")

但是我收到错误消息,并且未定义。 已定义,但我没有看到任何包含当前项目的属性。$.magnificPopup.instance.currItem$.magnificPopup.instance.st$.magnificPopup.instance

如何从 MagnificPopup 定义中访问调用对象?

jquery 这个 宏伟的弹出窗口

评论


答:

0赞 Dmitry Semenov 5/29/2015 #1

当 status 为 时,您可以使用 event 并更改设置,它会在 ajax 调用之前触发。updateStatusloading

$('.editRecord').on('mfpUpdateStatus', function(e, statusObj) {
    if(statusObj.status === 'loading') {
        var instance = $.magnificPopup.instance,
            currEl = instance.currItem.el;

        // modify settings object
        instance.st.ajax.settings.data = {
            something: currEl.data('something') 
        };

    }
});

上面也可以添加为回调 http://dimsemenov.com/plugins/magnific-popup/documentation.html#api

评论

0赞 froadie 6/1/2015
尝试将updateStatus添加为回调,但它从未触发。
0赞 froadie 6/1/2015
使用beforeOpen代替,它起作用了。但不得不使用而不是instance.st.elinstance.currItem.el