J'ai une info-bulle sur un élément d'ancrage, qui envoie une demande AJAX en un clic. Cet élément a une info-bulle (de Twitter Bootstrap). Je souhaite que le contenu de l'info-bulle change lorsque la demande AJAX revient avec succès. Comment puis-je manipuler l'info-bulle après l'initiation?
jquery
twitter-bootstrap
tooltip
rébellion
la source
la source
$(element).attr('title', 'NEW_TITLE').tooltip('fixTitle').tooltip('show');
$(element).attr('data-original-title', newValue).tooltip('show');
était la solution de travail la plus simple pour moi.Dans Bootstrap 3, il suffit d'appeler
elt.attr('data-original-title', "Foo")
car les changements dans l'"data-original-title"
attribut déclenchent déjà des changements dans l'affichage des info-bulles.MISE À JOUR: Vous pouvez ajouter .tooltip ('show') pour afficher les modifications immédiatement, vous n'avez pas besoin de passer la souris et de survoler la cible pour voir la modification dans le titre
la source
.tooltip('show');
pour qu'elle s'affiche après la mise à jourvous pouvez mettre à jour le texte de l'infobulle sans appeler / afficher:
la source
.tooltip('show')
sur la fin de la chaîne, a fonctionné pour moi.setContent
etshow
fait l'affaire! vous pouvez changerdata-original-title
directement au lieu d'utiliserfixTitle
Voici une bonne solution si vous souhaitez modifier le texte sans fermer et rouvrir l'info-bulle.
de cette façon, le texte est remplacé sans fermer l'info-bulle (ne repositionne pas, mais si vous faites un changement d'un mot, etc. ça devrait aller). et lorsque vous passez la souris sur + info-bulle, elle est toujours mise à jour.
** c'est bootstrap 3, pour 2 vous devrez probablement changer les données / noms de classe
la source
$tip
n'est pas un attribut de$(element)
$(element).attr('title', newTitle).tooltip('fixTitle').parent().find('.tooltip .tooltip-inner').text(newTitle);
pour Bootstrap 4:
la source
Cela fonctionne si l'info-bulle a été instanciée (éventuellement avec javascript):
la source
$('#tooltip_id').data('bs.tooltip').options.title = 'New_value!';
Pour bootstrap 3.x
Cela semble être la solution la plus propre:
Afficher est utilisé pour effectuer immédiatement la mise à jour du titre et ne pas attendre que l'infobulle soit masquée et affichée à nouveau.
la source
Voici la mise à jour du Bootstrap 4 :
Mais la meilleure façon est de faire comme ça:
ou en ligne:
Du côté UX, vous voyez simplement que le texte est modifié sans effet de fondu ou de masquage / affichage et qu'il n'y a pas besoin de
_fixTitle
.la source
Vous pouvez simplement changer le en
data-original-title
utilisant le code suivant:la source
Bootstrap 4
https://getbootstrap.com/docs/4.1/components/tooltips/#tooltipdispose
la source
Ce qui suit a fonctionné le mieux pour moi, fondamentalement, je supprime toute info-bulle existante et ne me donne pas la peine d'afficher la nouvelle info-bulle. Si vous appelez show sur l'info-bulle comme dans les autres réponses, il apparaît même si le curseur ne survole pas au-dessus.
La raison pour laquelle j'ai opté pour cette solution est que les autres solutions, en réutilisant l'info-bulle existante, ont conduit à des problèmes étranges avec l'info-bulle ne s'affichant parfois pas lors du survol du curseur au-dessus de l'élément.
la source
data('bs.tooltip')
place dedata('tooltip')
Dans bootstrap 4, j'utilise simplement
$(el).tooltip('dispose');
puis recrée comme d'habitude. Vous pouvez donc placer le disposer avant une fonction qui crée une info-bulle pour être sûr qu'elle ne double pas.Devoir vérifier l'état et bricoler les valeurs semble moins convivial.
la source
Vous pouvez définir du contenu sur l'appel d'info-bulle avec une fonction
Vous n'êtes pas obligé d'utiliser uniquement le titre de l'élément appelé.
la source
Merci ce code m'a été très utile, je l'ai trouvé efficace sur mes projets
$(element).attr('title', 'message').tooltip('fixTitle').tooltip('show');
la source
Détruisez toute info-bulle préexistante afin que nous puissions repeupler avec un nouveau contenu d'infobulle
la source
Je n'ai pu obtenir aucune réponse, voici une solution:
la source
Je pense que Mehmet Duran a presque raison, mais il y a eu quelques problèmes lors de l'utilisation de plusieurs classes avec la même info-bulle et leur placement. Le code suivant évite également les erreurs js en vérifiant s'il existe une classe appelée "tooltip_class". J'espère que cela t'aides.
la source
Modifiez le texte en modifiant directement le texte de l'élément. (ne met pas à jour la position de l'infobulle).
Modifiez le texte en détruisant l'ancienne info-bulle, puis en créant et en affichant une nouvelle. (Fait fondre l'ancien et le nouveau s'estompe)
J'utilise la méthode supérieure pour animer à la fois la «sauvegarde». message (en utilisant
 
pour que l'info-bulle ne change pas de taille) et pour changer le texte en "Terminé". (plus le remplissage) lorsque la demande est terminée.la source
Cela a fonctionné pour moi: (bootstrap 3.3.6; jquery = 1.11.3)
L'attribut
data-html="true"
permet d'utiliser html sur le titre de l'infobulle.la source
Avec l'objet info-bulle Boostrap:
la source
Pour BS4 (et BS3 avec des changements mineurs) .. après des heures de recherches et d'essais, j'ai trouvé la solution la plus fiable pour ce problème et cela résout même le problème d'en ouvrir plusieurs (info-bulle ou popover) en même temps, et le problème de l'ouverture automatique après avoir perdu le focus, etc.
la source
Je n'ai testé cela que dans bootstrap 4 et sans appeler .show ()
la source
vous pouvez utiliser ce code pour masquer l'info-bulle, modifier son titre et afficher à nouveau l'info-bulle, lorsque la demande ajax revient avec succès.
la source
J'utilise cette solution simple:
la source
Utile si vous devez modifier le texte d'une info-bulle après son initialisation avec attr 'data-original-title'.
la source