93 votes

comment détruire complètement la fenêtre modale de bootstrap ?

J'ai fait usage de fenêtre modale pour une mise en œuvre de l'assistant qui comporte environ 4,5 étapes. J'ai besoin de le détruire complètement après l'étape dernière étape (surFinish) et Étape OnCancel sans rafraîchissement de la page . Je peux bien sûr la masquer, mais le fait de cacher la fenêtre modale rétablit tout tel quel lorsque je l'ouvre à nouveau. Quelqu'un peut-il m'aider à résoudre ce problème ?

Merci Toutes les réponses aux questions sont utiles pour moi.

127voto

user2612497 Points 361

Si c'est bootstrap 3 que vous pouvez utiliser :

$("#mimodal").on('hidden.bs.modal', function () {
    $(this).data('bs.modal', null);
});

41voto

Conar Welsh Points 306

REMARQUE : Cette solution ne fonctionne que pour les versions de Bootstrap antérieures à la version 3. Pour une réponse à Bootstrap 3, reportez-vous à celui-ci par l'utilisateur2612497 .

Ce que vous voulez faire, c'est :

$('#modalElement').on('hidden', function(){
    $(this).data('modal', null);
});

qui fera en sorte que la modale s'initialise à chaque fois qu'elle est affichée. Ainsi, si vous utilisez un contenu distant pour le charger dans le div ou autre, cela se reproduira à chaque fois que la modale sera ouverte. Vous détruisez simplement l'instance de la modale à chaque fois qu'elle est masquée.

Ou lorsque vous voulez déclencher la destruction de l'élément (au cas où ce ne serait pas le cas à chaque fois que vous le cachez), il vous suffit d'appeler la ligne du milieu :

$('#modalElement').data('modal', null);

Twitter bootstrap recherche son instance dans l'attribut data, si une instance existe, il la bascule simplement, si une instance n'existe pas, il en crée une nouvelle.

J'espère que cela vous aidera.

20voto

zeliboba Points 717

Pour la version 3.x

$( '.modal' ).modal( 'hide' ).data( 'bs.modal', null );

Pour la version 2.x (risqué ; lire les commentaires ci-dessous) Lorsque vous créez une modale bootstrap, trois éléments de votre page sont modifiés. Donc si vous voulez annuler complètement tous les changements, vous devez le faire manuellement pour chacun d'entre eux.

$( '.modal' ).remove();
$( '.modal-backdrop' ).remove();
$( 'body' ).removeClass( "modal-open" );

16voto

chandanwtb Points 193

Vous pouvez détruire complètement une modale sans recharger la page de cette façon.

$("#modal").remove();
$('.modal-backdrop').remove();

mais cela supprimera complètement la modale de votre page html. Après cela, la modale cachée ne fonctionnera plus.

11voto

طلحة Points 96

J'ai essayé la réponse acceptée mais cela ne semble pas fonctionner de mon côté et je ne sais pas comment la réponse acceptée est censée fonctionner.

$('#modalId').on('hidden.bs.modal', function () {
  $(this).remove();
})

Cela fonctionne parfaitement bien de mon côté. Version BS > 3

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X