Jquery 如何修复我的自制模式脚本-或者:有其他选择吗?

Jquery 如何修复我的自制模式脚本-或者:有其他选择吗?,jquery,modal-dialog,Jquery,Modal Dialog,目前,我们使用的是获取模态iframe和模态yes/no对话框。 我们使用这两个组件的原因如下: 它们都依赖于jQueryUI主题——因此这两种模态元素之间没有任何中断。 使用jQueryUI对话框很容易获得yes/no对话框,并将事件附加到这些按钮上 blockUI实际上更加轻量级 我们现在正在寻找替代方案,因为用于获取模态iFrame的代码有点错误: var popups = {}; function showPopup(settings) { var target = setti

目前,我们使用的是获取模态iframe和模态yes/no对话框。 我们使用这两个组件的原因如下:

它们都依赖于jQueryUI主题——因此这两种模态元素之间没有任何中断。 使用jQueryUI对话框很容易获得yes/no对话框,并将事件附加到这些按钮上 blockUI实际上更加轻量级 我们现在正在寻找替代方案,因为用于获取模态iFrame的代码有点错误:

var popups = {};

function showPopup(settings) {
    var target = settings.target;
    var $popup = popups[target];
    if ($popup) {
        $popup.attr('src', 'blankPage.html');
    }
    else {
        $popup = $('<iframe/>');
        $popup.appendTo('form');
        $popup.css('display', 'none');
        $popup.attr('frameborder', 0);
        $popup.dialog({
            'title': settings.title,
            'autoOpen': false,
            'modal': true,
            'width': settings.width,
            'height': settings.height,
            'draggable': false,
            'resizable': false,
            'open': function () {
                var $widget = $popup.dialog('widget');
                $widget.css('position', 'fixed');
                $widget.css('top', '50%');
                $widget.css('margin-top', $widget.height() / 2 * -1);
                $widget.css('left', '50%');
                $widget.css('margin-left', $widget.width() / 2 * -1);
                $popup.css('width', settings.width);
                $popup.css('padding', '0px');
                $popup.attr('src', settings.target);
            }
        });
        popups[target] = $popup;
    }
    $popup.dialog('open');
}
它工作得很好,但是当点击打开一个对话框,然后关闭,然后重新打开它时,它会显示前一页的一些ms-如果模式内容本身有一些流,这可能会非常棘手


是否有机会修复它,或者有其他适合我们需要的脚本?

解决方案非常简单:

var popups = {};

function showPopup(settings) {
    var target = settings.target;
    var $popup = popups[target];
    if (!$popup) {
        $popup = $('<iframe/>');
        $popup.appendTo('form');
        $popup.css('display', 'none');
        $popup.attr('frameborder', 0);
        $popup.dialog({
            'title': settings.title,
            'autoOpen': false,
            'modal': true,
            'width': settings.width,
            'height': settings.height,
            'draggable': false,
            'resizable': false,
            'open': function () {
                var $widget = $popup.dialog('widget');
                $widget.css('position', 'fixed');
                $widget.css('top', '50%');
                $widget.css('margin-top', $widget.height() / 2 * -1);
                $widget.css('left', '50%');
                $widget.css('margin-left', $widget.width() / 2 * -1);
                $popup.css('width', settings.width);
                $popup.css('padding', '0px');
                $popup.attr('src', settings.target);
            },
            'close': function () {
                $popup.attr('src', 'blankPage.html');
            }
        });
        popups[target] = $popup;
    }
    $popup.dialog('open');
}

还是。。。我对任何其他选择都很感兴趣

我使用这个简单的模式

如果您正在寻找快速简便的模式,那么设置起来确实非常容易

试试看。它对我很有效

谢谢