shown.bs.modal se déclenche plusieurs fois lorsque vous fermez et rouvrez modal
J'ai fait du violon illustrant la question, je suis confronté en ce moment. Donc, à chaque fois que je ferme et ouvrir un modal, shown.bs.modal
déclenche également à de multiples reprises. Dans ce violon, à chaque fois que vous fermez et ouvrez un modal, le nombre d'alertes augmente aussi (quand il est censé déclencher qu'une seule fois). http://jsfiddle.net/j36h2/1/
function openTestModal(){
$('#testModal').modal({
keyboard: false,
backdrop: 'static'
});
$('#testModal').on('shown.bs.modal', function (e) {
alert('');
});
}
$('.testButton').click(function(){
openTestModal();
});
source d'informationauteur pewpewlasers
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin d'extraire votre fonction d'alerte de votre événement click :
http://jsfiddle.net/SyCNj/2/
extrait :
ou vous pouvez essayer ceci :
Accepté la réponse de @Put12co22mer2 est correct. Cependant, il ya des moments où vous souhaitez relier l'événement lors de l'ouverture du modal. Disons que vous avez quelques options qui devraient être utilisés.
Ensuite, vous pouvez utiliser
one
au lieu deon
. Le résultat sera le même que la déliaison, mais un peu plus propre à mon avis.http://api.jquery.com/one/
C'est parce que vous êtes fixation de plusieurs gestionnaires d'événements pour l'événement, cliquez d'abord sur l'écoute une fois, sur le deuxième clic deux fois et ainsi de suite, écouter l'événement en dehors du contexte de
openTestModal
fonction.La fonction ci-dessous est utilisé pour toutes les boîtes de dialogue dans mon application.
Elle est appelée à chaque fois avec un autre rappel pour s'exécuter. La solution la plus simple pour moi est tout simplement de supprimer le gestionnaire d'événements avant d'en ajouter un nouveau.
Définir variable et définissez sa valeur à 1; genre:
Vous pouvez essayer comme suit: (Bootstrap v3.3.6)