J'ai un problème avec les onglets jQuery Tools (AJAX) et la boîte de dialogue jQuery UI (en effectuant manuellement le chargement AJAX pour la boîte de dialogue). Le problème est que la boîte de dialogue est chargée et configurée spécifiquement pour l'onglet en cours (chargé sur la demande d'onglet via AJAX, ainsi que le contenu de l'onglet). jQuery UI, lors de la création de la boîte de dialogue, supprime le conteneur de sa position d'origine, ajoute son balisage et l'ajoute au corps.Boîte de dialogue de l'interface utilisateur jQuery avec les onglets AJAX Problème
Le problème est que la boîte de dialogue est maintenant en dehors du contenu de l'onglet et ne sera pas remplacée/supprimée lors des changements d'onglet suivants. Si l'utilisateur clique sur un autre onglet, ou sur le bouton Précédent (ces onglets ont un historique AJAX utilisant le hash d'URL, donc la page n'est pas rechargée), la boîte de dialogue est cassée mais n'est pas supprimée car jQuery UI Dialog l'a déplacé en dehors de le contenu de l'onglet. Il apparaît maintenant juste au bas du corps. J'ai écris un 'bidouillage' pour cela si l'utilisateur clique physiquement sur le bouton de fermeture, mais cela ne se déclenche pas si le bouton arrière est enfoncé ou qu'un autre onglet est chargé via AJAX et que l'interface utilisateur jQuery le déplace vers le bas du corps (Je ne sais pas comment/pourquoi ça fait ça!). Aucune suggestion? Et s'il vous plaît faites le moi savoir si je n'étais pas clair sur tout ça. Merci! (Voici ce que j'ai maintenant, qui enlève quand les utilisateurs se ferme physiquement avec succès la boîte de dialogue)
$('.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();
}
});
});