jQuery UI动画对话框显示/隐藏问题

时间:2011-05-09 14:32:41

标签: jquery jquery-ui

我正在使用一个对话框作为各种AJAX函数的加载叠加层,但是当对话框显示或隐藏附加到它的动画时,对话框将无法打开/关闭,直到AJAX函数完成。

以下是我正在使用的(简化)代码:

$("#loading_dialog").dialog(
{
  show: "fade",
  hide: "fade",
  closeOnEscape: false,
  stack: false,
  draggable: false,
  height: 421,
  width: 500,
  modal: false,
  position: {my: 'right', at: 'left', of: '#side_div', offset: "2 0"},
  resizable: false,
  dialogClass: 'loading',
  zIndex: 900,
  autoFocus: false
});

$("#start_ajax").click(function()
{
  $("#loading_dialog").dialog("open");

  $.when(ajaxFunction())
  .then(function()
  {
    //do stuff
    $("#loading_dialog").dialog("close");
  })
  .fail(function()
  {
    //handle error
  });
});

#loading_dialogajaxFunction()中的调用完成后才会打开,但在对话框初始化中注释掉show选项时会立即执行。当我尝试关闭对话框时也会发生同样的情况。

只是我吗?

1 个答案:

答案 0 :(得分:0)

$.when(ajaxFunction())

是你的问题。不要等待ajax完成,利用ajax回调函数。 AJAX的整个想法不是阻塞,你明确在做。

坚持下去:

$("#loading_dialog").dialog("close");

进入ajax回调。