如何在检索内容之前隐藏jquery对话框?

时间:2014-06-17 14:59:42

标签: javascript jquery

我有一个按钮的onclick设置为使用以下函数EditContact。此函数设置jquery对话框,从服务器获取数据并显示它。一切正常,但我想让它更好地工作。现在,空白对话框会弹出代码所需的时间并从服务器获取内容,然后对话框将填充内容。我的问题是如何才能在收到内容之前弹出对话框。

function EditContact() {
        $('#editContactView').dialog({
            modal: true,
            width: 'auto',
            position: ['top', 'center'],
            resizable: false,
            autoOpen: false,
            open: function (event) {
                var szAction = "Content url for this example";
                $(this).load(szAction,
                        function (response, status, xhr) {
                            $('#editContactView').dialog('open');
                            return false;
                        });
            }
        });

        $('#editContactView').dialog('open');

    }

2 个答案:

答案 0 :(得分:1)

您正在调用.dialog('open')两次:在代码的末尾和加载的回调中。

由于JavaScript是异步的,它在接收数据之前最后会运行第$('#editContactView').dialog('open');行。

删除此行应该可以解决问题。

答案 1 :(得分:1)

我认为你应该能够从根本上改变你的内容,并在$()。load()完成时打开对话框。这样的事情可能会这样做:

function editContact() {
    var szAction = "Content url for this example";
    $(this).load(szAction, function (response, status, xhr) {
        $('#editContactView').dialog({
            modal: true,
            width: 'auto',
            position: ['top', 'center'],
            resizable: false
        });
    });
}

编辑: 注意我删除了{autoOpen:false}。这将创建它并在收到内容后一次性打开它。