J'utilise des info-bulles d'amorçage Twitter 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 des <a>
éléments dynamiquement et les info-bulles ne s'affichent pas pour ces éléments dynamiques. Je sais que c'est parce que je ne lie .tooltip () qu'une seule fois lorsque le document est terminé chargé avec la $(document).ready(function()
fonctionnalité jquery typique .
Comment puis-je le lier à des éléments créés dynamiquement? Habituellement, je le fais via la méthode jquery live (). Cependant, quel est l'événement que j'utilise pour lier? Je ne sais pas comment connecter le bootstrap .tooltip () avec jquery .live ().
J'ai trouvé une façon de faire fonctionner ça, c'est quelque chose comme ça:
/* 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 semble un peu hackish. J'appelle également exactement la même ligne .tooltip () dans l'appel $ (ready). Ainsi, les éléments qui existent lorsque la page se charge pour la première fois et correspondent à ce sélecteur se retrouvent-ils deux fois avec l'info-bulle?
Je ne vois aucun problème avec cette approche. Je cherche juste une meilleure pratique ou une compréhension du comportement.
rel
attribut. Ce n'est pas sémantique et a été créé il y a plus de dix ans comme un hack. De nos jours, chaque navigateur datant de plusieurs années prend en charge les data-*
attributs et il n'y a plus de raison de ne pas les utiliser.