Comment supprimer tous jQuery dialogue de l'INTERFACE utilisateur quand il est fermé
Sur ma page principale, j'ai une sorte de panneau latéral qui peut être ouvert et fermé. Le panneau latéral est chargé via jQuery la fonction de charge dans un div sur la page principale.
Partie du contenu qui est chargé dans ce panneau latéral est un div(myDialog)
Quand on clique sur un bouton dans ce panneau latéral j'appelle:
$("#myDialog").dialog({
title : "Permission",
width : 300,
height : 200,
modal : true
});
Maintenant, si je ferme le panneau latéral et effacer son contenu avec jQuery fonction vide. Puis-je sélectionner tous et "afficher la source" le code html jQuery ajoutée au bas du corps est toujours là. Cela provoque des problèmes quand j'ai rouvrir le panneau de côté et essayez d'ouvrir la même boîte de dialogue, car il y en a deux que div(avec Id en double).
J'ai essayé d'ajouter cela, mais il ne fonctionne pas:
close : function(){
$("#myDialog").dialog("destroy");
}
Comment puis-je clair que html jQuery ajoute à la partie inférieure du corps? Ou est-il une meilleure façon de faire ce que je suis en train de faire?
Je ne fais pas de la seconde, jQuery. Apparemment quand je l'appelle $("#myDialog").dialog ({...}), il fait une copie de #myDialog et l'ajoute à la fin du corps.
jQueryUI ne pas en faire une copie, il en fait des coups de div à l'extrémité du corps, ainsi il n'y a toujours qu'un seul d'entre eux. jsfiddle.net/dchSr
Bien que explique beaucoup de choses. Donc la solution serait d'appeler $("#myDialog").remove() lorsque le panneau latéral se ferme pas lorsque la boîte de dialogue se ferme. Suis-je la corriger? Est-il possible de faire de jQuery pour mettre sa nouvelle version dans le panneau latéral de sorte que je n'ai pas à le supprimer manuellement?
Oui, cela me semble qu'il serait de travailler. Parce que si vous fermez le panneau latéral sans jamais ouvrir la boîte de dialogue, il serait encore là. jQuery déplace le div, il n'est donc pas dans son contenant d'origine, de sorte
empty()
ne serait pas le supprimer. Pour être sûr je dirais $('#myDialog').dialog('destroy').remove()
, assurez-vous que les événements sont supprimés.OriginalL'auteur Mike | 2011-12-08
Vous devez vous connecter pour publier un commentaire.
jQueryUI déplace réellement la div ailleurs dans les DOM lorsqu'un dialogue est créé, ainsi sortir de son contenant original. Donc, si vous avez essayé d'appeler
empty()
sur son emballage d'origine cela ne fonctionnerait pas.Vous devez supprimer la boîte de dialogue div lorsque le panneau latéral est fermé, pas lorsque la boîte de dialogue est fermée (si le dialogue n'a jamais été ouvert).
Cool, que doit faire ce type de problèmes, plus facile 🙂
OriginalL'auteur Rocket Hazmat
Veuillez consulter ce même post jquery: Comment faire pour supprimer complètement un dialogue sur fermer
OriginalL'auteur jhanifen
Vous avez juste à le retirer de la DOM. Essayez ceci dans votre
close
événement:OriginalL'auteur Groovetrain
lorsque vous fermez la boîte de dialogue alors il ne fermer la boîte, mais le contenu ne sera pas clair.. et si vous utilisez
méthode, puis il va supprimer la boîte de dialogue de DOM sorte que vous avez à effacer tout le contenu par vous-même .. ou lorsque vous rouvrez la boîte de dialogue, alors vous devez effacer toutes les données
c'est la manière de... l'essayer...
OriginalL'auteur user2628980
Ne
$("#myDialog").dialog("close")
pas de travail?Aussi
$('#myDialog').dialog("destroy").remove()
devrait être possible.À défaut, pourquoi ne pas utiliser une Classe à la place d'une pièce d'identité. De cette façon, les doubles n'a pas d'importance.
OriginalL'auteur Dan