0

我有一个简单的 jquery 弹出插件。用法如下所示:

$("#popupContainer").popup({
    onOpen: function () { },
    onClose: function () { }
});
$("#popupContainer").popup("open", "/Home/PopupContent");
$("#popupContainer").popup("close");

这很好用。

但是,我想为我拥有的不同 url 传递不同的 onOpen 回调。所以我想在插件上做一个包装器,像这样:

var popupPlugin = {};
(function () {
    var onOpen = null;
    var onClose = null;

    $("#popupContainer").popup({
        onOpen: function () {
            if (onOpen) {
                onOpen();
            }
            onOpen = null;
        },
        onClose: function () {
            if (onClose) {
                onClose();
            }
            onClose = null;
        }
    });

    popupPlugin.open = function (url, callback) {
        onOpen = callback;
        $("#popupContainer").popup("open", url);
    }
    popupPlugin.close = function (callback) {
        onClose = callback;
        $("#popupContainer").popup("close");
    }
}());

// usage
popupPlugin.open("/Home/PopupContent", function () {
    // specific callback
});

这按预期工作(我现在有不同的回调),但我担心我会以某种方式造成内存泄漏。

popupPlugin包装器的实现好吗?

4

0 回答 0