У меня возникла проблема с использованием вкладок инструментов jQuery (AJAX) вместе с диалоговым окном пользовательского интерфейса jQuery (вручную выполняется загрузка AJAX для диалогового окна). Проблема в том, что диалоговое окно загружается и настраивается специально для текущей вкладки (загружается по запросу вкладки через AJAX вместе с содержимым вкладки). Пользовательский интерфейс jQuery при создании диалогового окна удаляет контейнер из его исходного положения, добавляет его разметку и добавляет его в тело.
Проблема в том, что диалоговое окно теперь находится за пределами содержимого вкладки и не будет заменено/удалено при последующих изменениях вкладки. Если пользователь щелкает другую вкладку или кнопку «Назад» (эти вкладки имеют историю AJAX с использованием хэша URL-адреса, поэтому страница фактически не перезагружается), диалоговое окно прерывается, но не удаляется, поскольку диалоговое окно пользовательского интерфейса jQuery переместило его за пределы содержимое вкладки. Теперь он просто появляется в нижней части тела. Я написал «взломать» для этого, если пользователь физически нажимает кнопку закрытия, но это не срабатывает, если нажата кнопка «Назад» или другая вкладка загружается через AJAX, а пользовательский интерфейс jQuery фактически ПЕРЕМЕЩАЕТ ЭТО НАЗАД в нижнюю часть body (Не уверен, как/почему он это делает!). Какие-либо предложения? И, пожалуйста, дайте мне знать, если мне что-то непонятно. Спасибо! (Вот что у меня есть сейчас, что успешно удаляет его, когда пользователи физически закрывают диалог)
$('.openMyDialog').click(function() {
// Create div for dialog
$('body').append('<div id="modalContainer"></div>');
// Load dialog with AJAX
$('#modalContainer').load('loadMyAjaxContent.html').dialog({
modal: true,
width: 850,
open: function(type,data) {
// Remove from bottom of body and put it back into the tab's content
$(this).parent().appendTo('.panes div:first');
},
close: function() {
$(this).dialog('destroy');
$('#modalContainer').remove();
}
});
});