Ich verwende Twitter-Bootstrap-Tooltips mit Javascript wie folgt:
$('a[rel=tooltip]').tooltip();
Mein Markup sieht folgendermaßen aus:
<a rel="tooltip" title="Not implemented" class="btn"><i class="icon-file"></i></a>
Dies funktioniert gut, aber ich füge <a>
Elemente dynamisch hinzu und die QuickInfos werden für diese dynamischen Elemente nicht angezeigt. Ich weiß, dass ich .tooltip () nur einmal binde, wenn das Dokument mit der typischen jquery- $(document).ready(function()
Funktionalität geladen ist.
Wie kann ich dies an dynamisch erstellte Elemente binden? Normalerweise würde ich dies über die Methode jquery live () tun. Was ist jedoch das Ereignis, das ich zum Binden verwende? Ich bin mir nur nicht sicher, wie ich den Bootstrap .tooltip () mit jquery .live () verbinden soll.
Ich habe einen Weg gefunden, diese Arbeit so zu machen:
/* 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();
});
Das funktioniert, scheint aber irgendwie hackisch. Ich rufe auch genau dieselbe .tooltip () -Zeile im $ (ready) -Aufruf auf. Werden die Elemente, die beim ersten Laden der Seite vorhanden sind und mit diesem Selektor übereinstimmen, zweimal mit dem Tooltip angezeigt?
Ich sehe keine Probleme mit diesem Ansatz. Ich bin nur auf der Suche nach einer Best Practice oder einem Verständnis des Verhaltens.
rel
Attribut zu entführen . Dies ist nicht semantisch und wurde vor über einem Jahrzehnt als Hack entwickelt. Heutzutage unterstützt jeder einzelne Browser, der mehrere Jahre zurückliegt, data-*
Attribute, und es gibt keinen Grund mehr, sie nicht zu verwenden.