根据ajax加载内容的宽度自动调整jQuery UI对话框的大小

我很难找到这方面的具体信息和例子。我的应用程序中有许多jQuery UI对话框连接到加载了.ajax()调用的div。它们都使用相同的设置调用:

$(“.mydialog”).dialog({
自动打开:错误,
可调整大小:false,
莫代尔:对
});

我只想让对话框调整到加载内容的宽度。现在,宽度保持在300px(默认值),我得到一个水平滚动条

据我所知,“自动调整大小”不再是对话框的选项,当我指定它时,什么也不会发生

我试图不为每个对话框编写单独的函数,因此.dialog(“option”、“width”、“500”)实际上不是一个选项,因为每个对话框的宽度都不同

为对话框选项指定width:“auto”,只会使对话框占据浏览器窗口宽度的100%

我有什么选择?我将jQuery1.4.1与jQueryUI1.8rc1一起使用。看起来这应该是很容易的事情

编辑:我已经为此实现了一个笨拙的解决方案,但我仍在寻找更好的解决方案

我刚刚使用jQuery1.4.1和UI1.8rc1编写了一个小示例应用程序。我所做的只是将构造函数指定为:

var theDialog=$(“.mydialog”).dialog({
自动打开:错误,
可调整大小:false,
莫代尔:是的,
宽度:'自动'
});

我知道你说过,这使它占据了浏览器窗口的100%宽度,但它在FF3.6、Chrome和IE8中进行了测试,在这里工作得很好

我没有进行AJAX调用,只是手动更改对话框的HTML,但我认为这不会导致任何问题。其他css设置是否可以解决这个问题

唯一的问题是它使宽度偏离中心,但我找到了这张支持票,他们提供了一种解决方法,将对话框('open')语句放置在setTimeout中以解决问题

以下是我的头标签的内容:

<script type=“text/javascript”src=”http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js“&gt&lt/脚本>
<script type=“text/javascript”src=”https://stackoverflow.com/questions/2231446/jquery-ui.min.js“&gt&lt/脚本>
<链接href=”https://stackoverflow.com/questions/2231446/jquery-ui.css“rel=“stylesheet”type=“text/css”/>
<script type=“text/javascript”>
$(函数(){
var theDialog=$(“.mydialog”).dialog({
自动打开:错误,
可调整大小:false,
莫代尔:是的,
宽度:“自动”
});
$('#一')。单击(函数(){
html('some random text')。对话框('open');
});
$('#two')。单击(函数(){
dialog.html(“<ul><li>苹果</li><li>橙色</li><li>香蕉</li><草莓</li><li>查看宽度是否变化</li></ul>”)对话框(“打开”);
});
$('#三')。单击(函数(){
//这是唯一可以注意到偏离中心的呼叫,因此请使用setTimeout
html('<img src='https://stackoverflow.com/questions/2231446/random.gif“width=“500px”height=“500px”/>”);
setTimeout(函数(){theDialog.dialog('open')},100);;
});
});
&lt/脚本>

我从下载了jQueryUI的js和csshttp://jquery-ui.googlecode.com/files/jquery-ui-1.8rc1.zip.
和机构:

<div class='mydialog'&gt&lt/部门>
<a href='https://stackoverflow.com/questions/2231446/id='one'>测试1&lt/a>
<a href='https://stackoverflow.com/questions/2231446/id='two'>测试2&lt/a>
<a href='https://stackoverflow.com/questions/2231446/id='three'>测试3&lt/a>

发表评论