Хорошо, мои ноги промокли от mvc. Я пытаюсь создать страницу типа профиля пользователя. Страница состоит из нескольких разделов, каждый из которых загружен с помощью частичного просмотра.
Я хочу иметь возможность редактировать каждый раздел отдельно в модальном диалоговом окне jQuery-UI. У меня все это работает должным образом (включая загрузку представлений Edit через ajax в модальный режим и отправку изменений.)
Моя проблема в том, что после любого вызова ajax мои диалоговые окна jQuery-UI перестают работать, поэтому я не могу закрыть или открыть диалоговое окно.
Конечно, я могу исправить такие вещи, как нажатие кнопок с помощью метода .live, но я не могу найти лучший способ заставить элементы jQuery-UI продолжать работать.
Как лучше всего это сделать? Думаю, я не совсем понимаю, что происходит с ранее загруженными плагинами jQuery после вызова ajax. Могу ли я ссылаться на элементы, загруженные в ajax-контент с моей главной страницы?
EDIT:
Хорошо ... вот какой-то код, чтобы показать, что происходит ....
пользователь нажимает кнопку редактирования в разделе информации о пользователе
$('#editInfo').live("click", function () {
dialogInit(450, 550, 'User Information');
$('#dialog').dialog('open')
$.ajax({
type: 'GET',
url: '../info/edit',
data: {},
success: function (response) {
$('#dialog').html(response); //loads the partial edit view into the dialog div...works fine to here.
}
});
return false;
});
После этого у меня на экране появляется модал с кнопкой сохранения. Когда нажимают кнопку сохранения, я публикую свою форму ajax, которая вызывает эту функцию JS в случае успеха ...
function infoUpdate(response) {
dialogInit(450, 550, 'User Information');
$('#dialog').dialog('close');
$('#info').html(response);
}
Это загружает новое частичное представление информации о пользователе в соответствующий div на главной странице ... работает нормально ...
Проблема здесь в том, что диалоговое окно не закрыто ... поэтому ссылка на него, похоже, потеряна, даже если я переинициализирую его с помощью своей функции dialogInit ... которая выглядит следующим образом ...
function dialogInit(height, width, title) {
$('#dialog').dialog({
autoOpen: false,
modal: true,
draggable: false,
resizable: false,
height: height,
width: width,
title: title
});
}
РЕДАКТИРОВАТЬ 2:
Приведенный выше код также приводит к тому, что моя форма ajax публикуется несколько раз ... дополнительное время каждый раз, когда я нажимаю кнопку отправки ... не хорошо