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