Bootstrap 3 Popover: affichage sur hover ET sur click, aka. Épingler un popover
Faire une liste apparaît avec les passez déclencheur fonctionne très bien.
Faire une liste apparaît avec les cliquez sur déclencheur fonctionne très bien.
Maintenant, comment dois-je aller sur la liste apparaissent lorsque le déclenchement de l'image est survolé, mais alors, si l'utilisateur clique sur l'image, d'annuler le vol stationnaire et de lancer un clic bascule? En d'autres termes, planant montre la liste et en cliquant sur "pins" de la liste.
Le HTML est assez standard:
<li>User<span class="glyphicon glyphicon-user" rel="popover" data-trigger="click" data-container="body" data-placement="auto left" data-content="Body Text" data-original-title="Title Text"></span></li>
Et la liste d'initialisation, même les plus ennuyeux:
$(function () {
$("[rel=popover]").popover();
});
De ce que j'ai vu jusqu'à présent, il semble probable que la solution est un joli ensemble complexe de popover('show')
popover('hide')
et popover('toggle')
des appels, mais mon javascript /jQuery-foo n'est pas à la hauteur.
EDIT:
Utilisant le code fourni par @hajpoj comme base, j'ai ajouté une fonction pour écouter la hidden.bs.popover
événement pour essayer de le ré-activer le mouseenter et mouseleave après le déclenchement de l'événement de clic, mais bien qu'il ne faire le "hover" travailler de nouveau, il tue les clic...
var $btn2 = $('#btn2');
var enterShow = function() {
$btn2.popover('show');
};
var exitHide = function() {
$btn2.popover('hide');
}
$btn2.popover({trigger: 'manual'})
.on('mouseenter', enterShow)
.on('mouseleave', exitHide)
.one('click', function() {
$btn2.off('mouseenter', enterShow)
.off('mouseleave', exitHide)
.on('click', function() {
$btn2.popover('toggle');
});
});
$('#btn2').on('hidden.bs.popover', function () {
$btn2.on('mouseenter', enterShow)
.on('mouseleave', exitHide)
});
source d'informationauteur stk11067
Vous devez vous connecter pour publier un commentaire.
Edit:
Heres une mise à jour des solutions basées hors de votre commentaire. Il ne reste pas un "clic" de l'état, mais retourne à l'état de pointage.
jsfiddle: http://jsfiddle.net/hajpoj/JJQS9/15/
html:
js:
Vieux:
Je crois que c'est ce que vous cherchez:
http://jsfiddle.net/JJQS9/1/
html:
js:
Fondamentalement, vous manuellement pop ouvrir/fermer la fenêtre pop-over sur le
mouseenter
etmouseleave
événements, mais une fois que quelqu'un clique sur la liste pour la première fois, vous supprimez ces gestionnaires d'événements, et d'ajouter un nouveau gestionnaire, sur laclick
événement qui fait basculer la liste.Edit:
une solution de rechange code js. plus simple de code, mais il y a un petit visuel blip lorsque vous l'utilisez:
http://jsfiddle.net/hajpoj/r3Ckt/1/
Très simple, ajoutez
hover
àdata-trigger
comme suit:Voici un hybride liste/info-bulle qui pourrait vous donner la fonctionnalité que vous êtes à la recherche pour les deux options, permet de basculer sur cliquez et faites glisser):
Hybride liste/info-bulle violon
HTML:
JS:
Voici le chemin que j'ai accompli au hover/le fonctionnement de la broche à l'aide de Bootstrap et JQuery:
Je ne suis pas sûr que ça marchera dans tous les scénarios, mais il a travaillé dans la mine. Big dédicace à @hajpoj et @Trevor pour l'inspiration.
JSFiddle: https://jsfiddle.net/5m2ob3yf/ (Ne fonctionne pas encore, mais vous pouvez obtenir le gist).