如您所见,在触发ajax帖子之前,我有/无确认对话框。
成功后,确认对话框仍然可见。
我失踪了什么?
function AbandonOrder() {
$('<div></div>').appendTo('body')
.html('<div><strong>Abandon order? <br/> You will be unable to edit this order in the future.</strong></div>')
.dialog({
modal: true, title: 'Abandon order', zIndex: 10000, autoOpen: true,
width: 400, resizable: false,
buttons: {
Yes: function () {
jQuery.ajax({
url: 'some_URL',
type: "POST",
dataType: "JSON",
success: function (data) {
if (data == 'OKAY') {
tosomething();
$('#dlgCard').dialog("close");
}
else {
$("#divMsg").html("<ul><li>This order cannot be edited.</li></ul>")
$('#dlgMsg').dialog('open');
}
//$(this).dialog("close");
$(this).remove();
}
});
},
No: function () { $(this).dialog("close"); }
},
close: function (event, ui) { $(this).remove(); }
});
$('.ui-button-text').css({ fontSize: 12 });
$('.ui-dialog-title').css({ fontSize: 12 });
}
我尝试了
$(this).dialog("close");
和
$(this).remove();
但确认仍然可见。
答案 0 :(得分:0)
它是this
的范围 - 在AJAX请求中,this
将绑定到请求对象而不是DOM元素。为清楚起见,我在开始时将其删除:
var elem = $("<div></div>");
elem.html(...);
然后在你要关闭它的所有点上:
elem.dialog("close");
您还可以将context
选项传递给AJAX请求,该请求会将this
绑定到指定的对象:
// Assuming we have var elem as above
jQuery.ajax({context: elem[0], success: function() { $(this).dialog('close') }});
但这比在开始时提取变量要清楚得多。
答案 1 :(得分:0)
我认为你应该使用
$( "#dlgMsg" ).dialog( "close" );
当您打开dlgMsg
对话框但是您试图关闭卡片对话框$('#dlgCard').dialog("close");