Jquery ui dialog UI对话框窗口-如何在加载内容之前不显示对话框?

Jquery ui dialog UI对话框窗口-如何在加载内容之前不显示对话框?,jquery-ui-dialog,Jquery Ui Dialog,我一直在尝试使用一个UI对话框窗口来显示一个现有的表单(有表单但并没有布局的页面)。我不确定我是不是用正确的方式做了这件事,但除了一些不好的行为外,它似乎工作得很好。这就是现在的行为: 将打开没有内容的对话框窗口(非常小/空) 大约半秒钟后,内容加载,窗口疯狂地扩展(视觉上看起来很糟糕) 即使在加载内容时窗口宽度会扩大,标题栏也不会调整为新宽度,并且在宽度方面仍然非常小。虽然如果resizeable设置为“true”,标题将展开。加载隐藏div中的内容时,它只是不响应宽度调整 如何在内容加载完成

我一直在尝试使用一个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行实际上是为了防止该行过于狭窄。实际上还有两行。看起来是这样的:现在我知道问题是什么了-我想我会检查一下你的答案,因为你向我展示了如何正确编写函数,我现在确切地知道问题是什么,更具体地说。