我即时调用一个对话框(点击),而不是先将其设置为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
});
});
但是当我在ajax成功函数中调用$(this).dialog("close");
时,我收到以下错误:
Uncaught cannot call methods on dialog prior to initialization; attempted to call method 'close'
在&#34; cancel
&#34;按钮$(this).dialog("close");
工作得很好。
如何在ajax成功通话中使用close函数?
答案 0 :(得分:11)
内部成功函数,'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();
}
})
},
答案 1 :(得分:2)
你不能用$(this)来引用它,因为你在另一个函数中,你可以这样做,
div="<div id='yourDialog'>Are you sure you want to delete this?</div>";
//...........
$("#yourDialog").dialog("close");
答案 2 :(得分:0)
“成功”功能的范围与“删除”或“取消”功能的范围不同......
尝试使用var myDiv = $(div);
之类的内容,然后您可以随时随地调用它。尽量减少$(this)
的使用,以避免出现这种情况。
此外,只是一个快速提示,而不是$(this).attr('id')
使用this.id
;)
答案 3 :(得分:0)
您的$(this)在成功函数中具有不同的含义。尝试将其分配给变量并在ajax成功函数中使用它