如何在ajax响应后更新jQuery对话框

时间:2010-03-30 07:56:39

标签: jquery-ui modal-dialog

我想在收到ajax响应后更新jQuery对话框。

这是我的定义

  var $dialog = jQuery('<div>Wait</div>') .html('Sending your message...<img src="../images/AjaxWait.gif" style="float: left; padding-left: 50px;"/>')
.dialog({      
  modal: true,
  width: 160,
  autoOpen: false,
  resizable: false,
  draggable: false,
});

$dialog.siblings(".ui-dialog-titlebar").hide(); 

在ajax发送之前:

$dialog.dialog('open').dialog('option', 'height', 50);

一旦收到ajax回复,我正在尝试跟随:

jQuery('.ui-dialog-content').dialog('option', 'buttons', 
                            { "Ok": function() { jQuery(this).dialog('close'); } } );

....但没有任何反应...... 任何想法?

1 个答案:

答案 0 :(得分:0)

我认为您无法以这种方式修改现有对话框。要完成您面临的任务,只需在第一个调用中包含该按钮,但立即隐藏它。一旦ajax请求完成,只需取消隐藏按钮。要获得适当的视觉体验,只需使用隐藏/取消隐藏整个按钮窗格:

var $dialog = jQuery('<div>Wait</div>') .html('Sending your message...<img src="../images/AjaxWait.gif" style="float: left; padding-left: 50px;"/>')
  .dialog({      
    modal: true,
    width: 160,
    autoOpen: false,
    resizable: false,
    draggable: false,
    buttons: { "Ok": function() { jQuery(this).dialog('close'); }
  })
;

// hide buttons
$dialog.children('.ui-dialog-buttonpane').hide();

在ajax完成的事件处理程序中,只需执行

// unhide buttons
$dialog.children('.ui-dialog-buttonpane').show();

您可以选择提供缓动标识符来设置取消隐藏进程的动画。