我正在使用一个对话框作为各种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_dialog
在ajaxFunction()
中的调用完成后才会打开,但在对话框初始化中注释掉show选项时会立即执行。当我尝试关闭对话框时也会发生同样的情况。
只是我吗?
答案 0 :(得分:0)
$.when(ajaxFunction())
是你的问题。不要等待ajax完成,利用ajax回调函数。 AJAX的整个想法不是阻塞,你明确在做。
坚持下去:
$("#loading_dialog").dialog("close");
进入ajax回调。