Ich habe ein Bootstrap-Popover, das ein Element mit JS enthält, das, wenn es angeklickt wird, das Popover mit der manuellen Methode schließt, wie auf der Bootstrap-Website gezeigt, d. h.
%Vor%Es dauert jedoch zwei Klicks auf das Element, von dem das Popover geöffnet wird, um es wieder zu öffnen. Es ist, als ob es immer noch denkt, dass das Popover in der Show ist, und so ist der erste Klick, um es geschlossen zu schließen und der zweite Klick schaltet es dann wieder ein. Kann jemand einen Popover mit JS richtig schließen, um dies zu vermeiden? Ich habe die folgende Geige erstellt, die das Problem demonstriert.
Vielen Dank.
Update: Dieses Problem ist kein Duplikat der vorgeschlagenen Frage
Danke wie immer an die SO-Community, um den Platz sauber und relevant zu halten. Dies ist jedoch kein Duplikat der vorgeschlagenen Frage. Das Problem in dieser Frage war, dass die Popovers nicht initialisiert wurden bis der erste Klick. Daher hat der erste Klick das Popover nicht geöffnet, aber initialisiert, so dass der zweite und alle nachfolgenden Klicks funktioniert haben.
Das ist nicht das Problem, das ich gefunden habe. Popover werden beim Laden der Seite initialisiert, so dass mein erster Klick das Popover öffnet. Beim Schließen mit der manuellen Methode .popover ('hide') funktioniert der zweite Klick dann nicht. Jeder zweite Klick funktioniert in meinem Szenario. Dies sind verschiedene Probleme, die durch unterschiedliche Probleme verursacht werden. Das Problem im verknüpften Beitrag besteht darin, Popovers vor dem ersten Klick zu initialisieren, was ich bereits mache.
Ich habe das Problem gemeldet, das ich bei dem tbbs-Bootstrap-Projekt auf GitHub gefunden habe, und es stellt sich heraus, dass es sich um einen bekannten Bug handelt, der erstmals im Juli in der Version 3.3.5 gemeldet wurde. Es hatte einen Meilenstein von 3.3.6, aber das rutschte ab (3.3.6 kam kürzlich heraus) und hat jetzt einen Meilenstein von 3.3.7. Ausführliche Informationen zu Github hier:
Allerdings gibt es eine einfache Problemumgehung, die angewendet werden kann, während Sie darauf warten, dass sie an 3.3.7 gebunden wird. Ich werde es als Lösung veröffentlichen.
Update 2 Einverstanden: Dies ist ein Duplikat der neu vorgeschlagenen Frage "Duplikat von". Sieht so aus, als hätte der Fragesteller das Problem kurz vor mir entdeckt! Ich werde die Frage hier aber so klar wie ich (und andere) nicht finden, dass man zu der Zeit des Blickens so hoffnungsvoll es kann hilfreich sein kann.
Vielen Dank an den GitHub-Benutzer 'julesongithub', der diese Problemumgehung anbietet. Wenn Sie diese Option auf die gleiche Seite setzen wie ein Popover, das Sie schließen möchten, verwenden Sie .popover ('hide'), um das Problem zu lösen. Im Wesentlichen funktioniert es durch das Zurücksetzen der "inState.click" Variable für das Popover, das die Verbergen-Methode nicht tut.
%Vor%Die Problemumgehung, die ich verwende, ist die click () - Funktion für das Element, das das Popover auslöst, aus folgendem Grund: Sie wollen das Popover nur ausblenden, wenn es angezeigt wird, und auch das Popover-Element das Element, um es zu verstecken. Davon abgesehen, klick () wird es verschwinden lassen. Anstelle von
$('#element').popover('hide')
Ich benutze
$('#element').click()
Es funktioniert soweit gut ...
Ich habe das behoben, indem ich die Trigger-Option bei der Instanziierung des Popover geändert habe.
%Vor%Beachten Sie, dass diese Option erfordert, dass Sie und das Popover ausblenden.
Tags und Links javascript twitter-bootstrap