Jquery ui dialog UI对话框窗口-如何在加载内容之前不显示对话框?
我一直在尝试使用一个UI对话框窗口来显示一个现有的表单(有表单但并没有布局的页面)。我不确定我是不是用正确的方式做了这件事,但除了一些不好的行为外,它似乎工作得很好。这就是现在的行为:Jquery ui dialog UI对话框窗口-如何在加载内容之前不显示对话框?,jquery-ui-dialog,Jquery Ui Dialog,我一直在尝试使用一个UI对话框窗口来显示一个现有的表单(有表单但并没有布局的页面)。我不确定我是不是用正确的方式做了这件事,但除了一些不好的行为外,它似乎工作得很好。这就是现在的行为: 将打开没有内容的对话框窗口(非常小/空) 大约半秒钟后,内容加载,窗口疯狂地扩展(视觉上看起来很糟糕) 即使在加载内容时窗口宽度会扩大,标题栏也不会调整为新宽度,并且在宽度方面仍然非常小。虽然如果resizeable设置为“true”,标题将展开。加载隐藏div中的内容时,它只是不响应宽度调整 如何在内容加载完成
<A HREF="javascript:newItem('foo')">CREATE NEW FOO ITEM<A>
<script type="text/javascript">
newItem= function(type) {
$("#form_load").load(
'/items/new', {item_type: type}).dialog({
modal:true,
draggable: true,
resizable: false,
width:'auto',
height:'auto',
title: 'Some title',
position: [150, 150]
});
};
</script>
创建新的FOO项
newItem=函数(类型){
$(“#表格加载”)。加载(
“/items/new”,{item_type:type})。对话框({
莫代尔:是的,
真的,
可调整大小:false,
宽度:'自动',
高度:'自动',
标题:“一些标题”,
职位:[150150]
});
};
谢谢 加载内容后,您需要调用该对话框。 您可以使用$.load的回调方法来实现这一点
<script type="text/javascript">
newItem = function(type) {
$("#form_load").hide().load(
'/items/new',
{item_type: type},
function (data) {
$(this).dialog({
modal : true,
draggable : true,
resizable : false,
width : 'auto',
height : 'auto',
title : 'Some title',
position : [100, 100]
});
}
});
}
</script>
newItem=函数(类型){
$(“#form_load”).hide().load(
“/items/new”,
{item_type:type},
功能(数据){
$(此)。对话框({
莫代尔:是的,
真的,
可调整大小:false,
宽度:“自动”,
高度:“自动”,
标题:“一些标题”,
职位:[100100]
});
}
});
}
您可能还希望包含一个隐藏/显示切换,以便在加载内容之前不会显示#表单加载容器
请参见jQuery的$.load文档:
更新:添加了.hide(),所以在创建对话框之前不会显示内容。谢谢,但这对我不起作用。问题似乎不是来自加载事件。看起来,当div加载表单后,对话框窗口会打开,然后在对话框中复制div中的内容时会出现一个瞬间延迟(当内容到达对话框后,对话框会自动调整内容大小,但标题栏不会).好吧,我根本没有注意到这一点,但这种行为只发生在IE7中。这在IE8或Firefox中是不会发生的。它与.ui-helper-clearfix有关(或者实际上与.ui-helper-clearfix未修复的内容有关),您是否在线提供了此示例?不,抱歉。。。IE7中的clearfix css行实际上是为了防止该行过于狭窄。实际上还有两行。看起来是这样的:现在我知道问题是什么了-我想我会检查一下你的答案,因为你向我展示了如何正确编写函数,我现在确切地知道问题是什么,更具体地说。