シンプルな 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
ラッパーの実装は適切ですか?