获取 JQuery UI 弹出窗口的实例

Get instance of JQuery UI popup

我正在创建一个 JQuery UI 弹出窗口:

function ShowJQueryStandardDialog(searchTarget, title, width, height, closeFunction)
{
    var $dialog = $('<div id="dialogDIV"><iframe id="dialogIFrame" frameborder="no" scrolling="auto" src="' + searchTarget + '" width="' + (width - 50) + 'px" height="' + (height - 50) + 'px"></iframe></div>');

    $dialog.dialog(
    {
        modal: true,
        title: title,
        show: 'slide',
        width: width,
        height: height,
        closeOnEscape: true,
        close: function (event, ui)
        {
            if (typeof closeFunction === 'function') closeFunction();
        }
    });
}

然后我想在代码的其他地方获取弹出窗口的实例,以便关闭它。我试过了:

var $dialog = $('#dialogDIV');
var $dialog = $('.ui-dialog');
var $dialog = $('.ui-dialog-content');

但它returns 是空对象。请注意,如果我将上面的代码放在对话框的 close 方法中,它可以正常工作。我是否可以得出结论,我无法从其初始代码外部访问弹出窗口?

找到方法:

function ShowJQueryStandardDialog(searchTarget, title, width, height, closeFunction)
{
    $dialog = $('<div id="dialogDIV"><iframe id="dialogIFrame" frameborder="no" scrolling="auto" src="' + searchTarget + '" width="' + (width - 50) + 'px" height="' + (height - 50) + 'px"></iframe></div>');

    $dialog.dialog(
    {
        modal: true,
        title: title,
        show: 'slide',
        width: width,
        height: height,
        closeOnEscape: true,
        close: function (event, ui)
        {
            if (typeof closeFunction === 'function') closeFunction();
        }
    });

    /* IMPORTANT BIT */
    $(document).bind('close-dialog', function ()
    {
        $dialog.dialog('close');
    });
}

然后在您想要关闭对话框时调用 parent.$(parent.document).trigger('close-dialog');