使JQuery UI对话框自动增长或缩小以适应其内容
我有一个JQuery UI对话框popup窗口显示。 通过select表单上的某些选项,新的选项将出现在表单中,使其变长。 这可能会导致主页面有一个滚动条,而JQuery UI对话框有一个滚动条。 这个双滚动条的情况对于用户而言是难看的和混乱的。
我怎样才能使JQuery UI对话框增长(可能缩小),始终适合其内容,而不显示滚动条? 我宁愿只有主页上的滚动条是可见的。
更新:从jQuery UI 1.8开始,工作解决scheme(如第二个注释中提到的)将使用:
width: 'auto'
使用autoResize:true选项。 我会说明:
<div id="whatup"> <div id="inside">Hi there.</div> </div> <script> $('#whatup').dialog( "resize", "auto" ); $('#whatup').dialog(); setTimeout(function() { $('#inside').append("Hello!<br>"); setTimeout(arguments.callee, 1000); }, 1000); </script>
这是一个工作示例: http : //jsbin.com/ubowa
答案是设置
autoResize:true
属性创build对话框时。 为了这个工作,你不能为对话框设置任何高度。 因此,如果在其创build者方法中或通过任何样式为对话框设置固定的像素高度,则autoResize属性将不起作用。
这适用于jQuery UI v1.10.3
$("selector").dialog({height:'auto', width:'auto'});
我使用了下面的属性,它适合我:
$('#selector').dialog({ minHeight: 'auto' });
自动支持高度。
宽度不是!
要做某种自动获得您显示的div的大小,然后设置窗口。
在C#代码中
TheDiv.Style["width"] = "200px"; private void setWindowSize(int width, int height) { string widthScript = "$('.dialogDiv').dialog('option', 'width', " + width +");"; string heightScript = "$('.dialogDiv').dialog('option', 'height', " + height + ");"; ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "scriptDOWINDOWSIZE", "<script type='text/javascript'>" + widthScript + heightScript + "</script>", false); }
var w = $('#dialogText').text().length; $("#dialog").dialog('option', 'width', (w * 10));
做了我需要做的调整对话框的宽度。
如果你需要它在IE7中工作,你不能使用未公开的,错误的和不受支持的 {'width':'auto'}
选项。 相反,将以下内容添加到.dialog()
:
'open': function(){ $(this).dialog('option', 'width', this.scrollWidth) }
.scrollWidth
是否包含右侧填充取决于浏览器(Firefox不同于Chrome),因此您可以向.scrollWidth
添加一个主观的“足够好”的像素.scrollWidth
,或者用您自己的宽度计算函数replace它。
你可能想在你的.dialog()
选项中包含width: 0
,因为这个方法永远不会减小宽度,只会增加宽度。
经testing可在IE7,IE8,IE9,IE10,IE11,Firefox 30,Chrome 35和Opera 22上运行。