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

时间:2015-05-28 11:20:07

标签: jquery this magnific-popup

使用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)似乎实际上是指文档对象。

我找到this question并尝试了答案中的所有建议,但似乎都没有,因为这不是回调,它在设置中。试过了:

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

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

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

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

1 个答案:

答案 0 :(得分:0)

您可以使用updateStatus事件并在状态为loading时更改设置,它会在ajax调用之前触发。

$('.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