Comment puis-je lier Twitter Bootstrap des info-bulles pour créer dynamiquement des éléments?
Je suis en utilisant Twitter bootstrap des info-bulles avec javascript comme suit:
$('a[rel=tooltip]').tooltip();
Mon balisage ressemble à ceci:
<a rel="tooltip" title="Not implemented" class="btn"><i class="icon-file"></i></a>
Cela fonctionne bien, mais j'ajoute <a>
les éléments de façon dynamique et les info-bulles ne sont pas affichées pour les éléments dynamiques. Je sais que c'est parce que je ne lient .tooltip() une fois lorsque le document est terminé chargé avec le typique jquery $(document).ready(function()
fonctionnalité.
Comment puis-je lier cela à créé dynamiquement des éléments? Généralement je le faire via jquery live() la méthode. Cependant, ce qui est l'événement que j'utilise pour lier? Je ne suis pas sûr de la façon de raccorder le bootstrap .tooltip() avec jquery .live().
J'ai trouvé une façon de faire ce travail est quelque chose comme ceci:
/* Add new 'rows' when plus sign is clicked */
$("a.add").live('click', function () {
var clicked_li = $(this).parent('li');
var clone = clicked_li.clone();
clone.find(':input').each(function() {
$(this).val('');
});
clicked_li.after(clone);
$('a[rel=tooltip]').tooltip();
});
Cela fonctionne, mais il semble que ce genre de hackish. Je suis aussi de l'appel de la même exacte .tooltip() ligne dans le $(prêt) d'appel. Oui, les éléments qui existent lorsque la page se charge tout d'abord et la correspondance sélecteur jusqu'à la fin avec l'info-bulle deux fois?
Je ne vois pas de problèmes avec cette approche. Je suis à la recherche d'une meilleure pratique ou de compréhension du comportement.
- hmm bonne question, est-il utile? github.com/twitter/bootstrap/issues/2374
- C'est une lecture intéressante, mais je suis le seul à vouloir un seul type d'info-bulle. Je veux juste m'assurer que tout ajoutées dynamiquement les éléments qui correspondent à la bulle d'aide du sélecteur ajoutés, ce qui n'est pas le cas.
- Grande question. Semble comme une oversite de la part de twitter.
- Comment les Chrétiens réponse pour vous? Soins à accepter comme correcte?
- Oui, cette solution fonctionne. Mise à jour de la réponse. Merci pour le rappel.
- Pas vraiment liée à votre question, mais... je le trouve mauvais style de détourner le
rel
attribut. Ce n'est pas la sémantique et a été créé il y a dix ans comme un hack. De nos jours, chaque navigateur, qui remontent à plusieurs années soutientdata-*
attributs et il n'y a pas plus de raison de ne pas les utiliser.
Vous devez vous connecter pour publier un commentaire.
Essayez celui-ci:
$('#map')
, et mon problème semble résolu. Cela pourrait aussi aider les lecteurs qui ont la même question que @BZ.$("body").tooltip()
appel plus d'une fois semble écraser la précédente, même si le sélecteur est différent.Si vous avez plusieurs info-bulle des configurations que vous voulez initialiser, ce qui fonctionne bien pour moi.
Vous pouvez ensuite définir la propriété sur les différents éléments à l'aide de
data
attributs.Pour moi, seule la capture de l'événement mouseenter était un peu buggy, et l'info-bulle n'était pas de montrer/cacher correctement.
J'ai eu à l'écrire, et il est maintenant fonctionne parfaitement:
J'ai posté plus de réponse ici: https://stackoverflow.com/a/20877657/207661
TL;DR: Vous avez besoin d'une seule ligne de code qui s'exécute dans le document prêt événement:
D'autres plus compliquées code suggéré dans d'autres réponses ne me semble pas nécessaire (j'ai testé cela avec Bootstrap 3.0).
Pour moi, ce js reproduit le même problème qui se produit avec Paola
Ma solution:
Plutôt que d'effectuer une recherche en plein Corps.
On pourrait tout de l'utilisation de dynamic titre de l'option déjà disponible dans de tels scénarios, je pense:
J'ai trouvé une combinaison de ces réponses m'ont donné les meilleurs résultats, ce qui me permet de toujours positionner l'info-bulle et de la joindre à la conteneur:
HTML concernés: