Używam podpowiedzi bootstrap Twittera z javascript, takich jak:
$('a[rel=tooltip]').tooltip();
Mój znacznik wygląda następująco:
<a rel="tooltip" title="Not implemented" class="btn"><i class="icon-file"></i></a>
Działa to dobrze, ale dodaję <a>
elementy dynamicznie, a podpowiedzi nie są wyświetlane dla tych dynamicznych elementów. Wiem, że to dlatego, że wiążę .tooltip () tylko raz, gdy dokument jest załadowany z typową $(document).ready(function()
funkcją jquery .
Jak mogę to powiązać z dynamicznie tworzonymi elementami? Zwykle robiłbym to za pomocą metody live () jquery. Jakiego zdarzenia używam do wiązania? Po prostu nie jestem pewien, jak podłączyć bootstrap .tooltip () za pomocą jquery .live ().
Znalazłem jeden ze sposobów, aby ta praca działała mniej więcej tak:
/* 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();
});
To działa, ale wydaje się trochę hackish. Dzwonię również dokładnie taką samą linię .tooltip () w wywołaniu $ (ready). Czy więc elementy, które istnieją, gdy strona ładuje się po raz pierwszy i pasują do tego selektora, kończą się dwukrotnie etykietką?
Nie widzę żadnych problemów z tym podejściem. Po prostu szukam najlepszej praktyki lub zrozumienia tego zachowania.
rel
atrybutu jest złym stylem . To nie jest semantyczne i powstało ponad dziesięć lat temu jako hack. Obecnie każda przeglądarka sprzed kilku lat obsługuje data-*
atrybuty i nie ma już powodu, aby ich nie używać.