besoin de cliquer deux fois après masquer un pop-up bootstrap montré

$('#popoverlink').popover(); $("#popoverhide").click(function() { $("#popoverlink").popover("hide"); }); 
 #popoverlink { position: absolute; top: 100px; left: 100px; } 
 Popover hide 

Même avec le violon Désolé le lien précédent était faux. Celui-ci est correct.

Après avoir masqué le popover affiché, je dois cliquer deux fois sur le déclencheur pour l’afficher à nouveau.

Est-ce un bug? Y a-t-il quelque chose qui peut éviter cela?

MISE À JOUR Je veux dire que j’ai utilisé un autre bouton pour cacher un popover par

 $("#popoverTrigger").popover("hide"); 

Alors je dois cliquer sur le “#popoverTrigger” deux fois pour le montrer.

SOLUTION STUPIDE

 $("popoverhide").click(function() { var f = false; if($("popoverlink").next('div.popover:visible')) { f = true; $("popoverlink").popover("hide"); } if(f) { $("popoverlink").click(); } }) 

Y a-t-il une autre bonne idée?

Toujours pas corrigé dans 3.3.6 mais j’ai trouvé une solution proposée ici:

https://github.com/twbs/bootstrap/issues/16732

https://github.com/twbs/bootstrap/pull/17702/files#diff-f3e99e0bb007ace7a370f0492b9cb5abR340

Je l’ai appliqué dans l’événement caché:

 $('body').on('hidden.bs.popover', function (e) { $(e.target).data("bs.popover").inState.click = false; }); 

Cela fonctionne pour moi. Pour être exactement le même que le correctif proposé, ce serait:

 $('body').on('hidden.bs.popover', function (e) { $(e.target).data("bs.popover").inState = { click: false, hover: false, focus: false } }); 

Note: J’utilise des popovers delegates, c’est pourquoi j’utilise la référence $ (‘body’).

Pour Bootstrap 4, utilisez _activeTrigger au lieu de inState :

 $(e.target).data("bs.popover")._activeTrigger.click = false 

C’est un bogue dans la v3.3.5:

https: //github.com/twbs/bootstrap/issues/16732

Il suffit d’utiliser 3.3.4 pour l’instant jusqu’à ce qu’il soit corrigé.

Je suis récemment tombé sur ce bogue et c’est comme ça que je l’ai corrigé:

 $('.myPopoverClass') .popover({ sortinggger: 'manual', /* <- important, instantiates popover */ container: 'body', /* optional */ animation: false }) .click(function(e) { $('.popover').not(this).hide(); /* optional, hide other popovers */ $(this).popover('show'); /* show popover now it's setup */ e.preventDefault(); }); 

J’ai eu une fenêtre contextuelle qui s’estompe après 3 secondes et nécessitait un double clic pour la rouvrir. A suivi la solution de Darren et cela a fonctionné.

 $(function () { $('#popLinks').popover({ html: true, sortinggger: 'manual', animation: true }); $('#popLinks').click(function () { $(this).popover('show'); setTimeout(function () { $('.popover').fadeOut('slow'); }, 3000); e.preventDefault(); }); }); 

Après avoir supprimé le code suivant pour moi. Faire l’initialisation des données en HTML:

 $('[data-toggle=popover]').popover({ placement : 'bottom' }); 

J’ai utilisé la réponse de Darren ci-dessus. Désolé Darren, je ne peux toujours pas commenter le post des autres. Un léger changement cependant. J’ai changé ‘show’ pour ‘basculer’ pour pouvoir basculer la boîte de dialog.

De:

 $(this).popover('show'); 

À

 $(this).popover('toggle'); 

Utilisez simplement ceci:

 $('[data-toggle="popover"]').popover('toggle'); 

Au lieu de:

 $('[data-toggle="popover"]').popover();