[英]can't close dialog box within ajax success
我正在快速调用一个对话框(点击),而不是先将其设置为var。 像这样:
$(".deleteSaved").click(function() {
save_id = $(this).attr('id');
div="<div>Are you sure you want to delete this?</div>";
$(div).dialog({
buttons: {
"Delete": function() {
$.ajax ({
url:"util.php",
data:"q=0&f=delete&save_id="+save_id,
success: function(result){
$(this).dialog("close"); //this line is not working
$("#toprow"+save_id).fadeOut();
$("#botrow"+save_id).fadeOut();
}
})
},
"Cancel": function() {
$(this).dialog("close");
}
},
modal: true,
title: 'Delete Saved Signal',
resizable: false
});
});
但是当我打电话给$(this).dialog("close");
在ajax成功函数中我得到以下错误:
Uncaught cannot call methods on dialog prior to initialization; attempted to call method 'close'
在“ cancel
”按钮内$(this).dialog("close");
工作得很好。
如何在ajax成功调用中使用close函数?
在内部成功函数中,'this'不指向对象对象。 您可能必须将对话框对象存储在另一个变量中,如下所示
"Delete": function() {
var that = this;
$.ajax ({
url:"util.php",
data:"q=0&f=delete&save_id="+save_id,
success: function(result){
$(that).dialog("close"); //this line will work
$("#toprow"+save_id).fadeOut();
$("#botrow"+save_id).fadeOut();
}
})
},
你不能使用$(this)来引用它,因为你在另一个函数中,你可以这样做,
div="<div id='yourDialog'>Are you sure you want to delete this?</div>";
//...........
$("#yourDialog").dialog("close");
“成功”功能的范围与“删除”或“取消”功能的范围不同...
尝试使用var myDiv = $(div);
然后你可以随意调用它。 尽量减少使用$(this)
来避免这种情况。
此外,只是一个快速提示,而不是$(this).attr('id')
使用this.id
;)
您的$(this)在成功函数中具有不同的含义。 尝试将其分配给变量并在ajax成功函数中使用它
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.