Ответ 1
Вы должны использовать опцию ajax context: $(this),
, чтобы установить область для обратных вызовов для выбранного элемента.
Имея проблемы со ссылкой на $(this) изнутри вложенной функции "ajax"... Я знаю, что это проблема с областью, но не может найти чистый способ закрыть диалог при успешном обновлении. Спасибо за любую помощь.
$("#dialog_support_option_form").dialog({
width: 400,
height: 180,
bgiframe: true,
autoOpen: false,
modal: true,
buttons: {
'Save Support Option': function(){
$.ajax({
type: 'POST',
url: "support_options/create_support_option.php",
data: $(this).find('form').serialize(),
success: function(data){
$("#list_support_options").html(data);
$(this).dialog('close');
}
});
},
'Cancel': function(){
$(this).dialog('close');
}
},
close: function(){
$(this).find('input').val('');
}
});
Вы должны использовать опцию ajax context: $(this),
, чтобы установить область для обратных вызовов для выбранного элемента.
Вам нужно иметь копию этой переменной, например:
var dlg = $(this);
$.ajax({
type: 'POST',
url: "support_options/create_support_option.php",
data: $(this).find('form').serialize(),
success: function(data){
$("#list_support_options").html(data);
dlg.dialog('close');
}
});
Так как this
находится в другом контексте при возврате, вам нужно его захватить и передать в закрытие:)
Попробуйте с помощью $.proxy()
success: $.proxy(function(data){
$(this).dialog('close');
}, this);
Вы можете "передать" область от "выше" до функции с ней