jQueryUI - AJAX 加载后调整对话框大小

标签 jquery jquery-ui jquery-ui-dialog

我正在尝试编写一个快速插件,将一些 AJAX 内容加载到 jQuery UI 对话框中,并相应地调整对话框的大小和居中。以下是其作用的要点:

$(mySelector).html('Loading...').load(options.url, function() {

    element = $(mySelector);

    element.dialog('option', 'height', element.height() + 50);
    element.dialog('option', 'width', element.width());
    element.dialog('option', 'position', 'center');

});

高度似乎还可以(添加一些用于填充对话框添加的内容),但无论如何,宽度始终为 274。我认为对话框本身正在对其设置大小限制。如何将其设置为加载内容的自然宽度?

编辑/添加: 它返回模态框的默认大小。因为即使它包含更宽的内容(例如 500px 图像),父容器 (mySelector) 也可能没有那么宽(至少在 FF 中),所以它始终是默认值 (300 - padding = 274)。有没有办法自动检测返回内容的最小宽度而不滚动?)

最佳答案

我以前也遇到过同样的问题。如果我记得的话,您需要首先加载对话框,然后加载其中的内容。这样,对话框将自动调整其内容大小(宽度=自动)。

更像这样(经过测试):

var $dialog; //Must be at the global scope
function dialog(url) {
    $dialog.dialog("option", "width", "auto");
    $dialog.dialog("option", "height", "auto");
    $.get(url,{},function(html) {
        $dialog.html(html);
        $dialog.dialog("open");
    });
}

$(function() {
    //Initialize (without showing it)
    var $dialog = $('<div id="dialog" title=""></div>').dialog({
        autoOpen: false,
        modal: true
    });
});

然后你可以这样做:

dialog(someURL);

关于jQueryUI - AJAX 加载后调整对话框大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4687567/

相关文章:

javascript - 单击按钮时创建多个实例 jQuery UI 对话框

javascript - jQuery 按时间间隔单击各个元素

javascript - 如何使用 jQuery 检查日期与当前日期

javascript - 每行第一个单词大写

javascript - jQuery 滑出问题

javascript - 删除外部 jquery UI 对话框滚动并将内部滚动添加到 div

javascript - 如果用户在 iOS 设备上,隐藏 HTML 元素?

jquery UI slider 不显示(附有 css)

jquery-ui - 在 jquery ui datepicker 插件中设置特定日期的样式

javascript - jQuery UI 对话框无法正确居中