Udało mi się uzyskać kilka wskazówek dotyczących narzędzi, aby w końcu pracować z następującym kodem:
<a href="#" rel="tooltip" title="Tool tip text here">Hover over me</a>
i wtedy
<script>
$('[rel=tooltip]').tooltip();
</script>
Problem polega na tym, że używa on podpowiedzi jQueryUI (bez strzałek, duże brzydkie podpowiedzi) zamiast Bootstrapów.
Co muszę zrobić, aby korzystać z etykiet narzędzi Bootstrap zamiast jQueryUI?
jquery-ui
twitter-bootstrap
markdotnet
źródło
źródło
Odpowiedzi:
Zarówno interfejs użytkownika jQuery, jak i Bootstrap używają
tooltip
nazwy wtyczki. Służy$.widget.bridge
do tworzenia innej nazwy dla wersji interfejsu użytkownika jQuery i zezwalania wtyczce Bootstrap na pozostanie nazwaną etykietką narzędzia (próba użycianoConflict
opcji w widgecie Bootstrap powoduje tylko wiele błędów, ponieważ nie działa ona poprawnie; ten problem został zgłoszony tutaj ):Więc kod, aby to zadziałało:
Ładny kod kopiuj wklej, który obsługuje również konflikt przycisków:
źródło
'undefined' is not an object (evaluating '$.widget.bridge')
bridge
, a następnie zaimportować bootstrap.Prostym rozwiązaniem jest załadowanie bootrap.js po jquery-ui.js, tak aby metoda bootstrap .tooltip miała pierwszeństwo.
źródło
To zadziałało dla mnie:
Jeśli potrzebujesz użyć JQuery-UI, ale chcesz użyć podpowiedzi bootstrap, po prostu pobierz dostosowaną wersję JQuery-UI z tej strony .
Po prostu odznacz opcję „Podpowiedź” i pobierz ją (będzie to coś w rodzaju „jquery-ui-1.10.4.custom.js”).
Po prostu dodaj go do swojego projektu zamiast wersji, z której obecnie korzystasz i jesteś gotowy do zabawy. Pozwoli to uniknąć konfliktu. Dla mnie zadziałało jak urok!
źródło
Jeśli musisz załadować
jquery-ui.js
później,bootstrap.js
oto jak to zrobić:Spowoduje to przesłonięcie podpowiedzi jquery-ui i zawsze używanie bootstrapów.
źródło
Zakładając, że interfejs użytkownika zostanie wywołany po zainicjowaniu funkcji bootrap
Przechowuj funkcję ładowania początkowego tuż przed zainicjowaniem interfejsu użytkownika
Następnie nazwij to następująco
źródło
$.fn.bstooltip = $.fn.tooltip.noConflict();
Wydaje mi się, że to rozwiązanie działa dobrze.
źródło
Co powiesz na użycie zamiast tego okienek wyskakujących Bootstrap? Wyskakujące okienka BS nie powodują tego samego konfliktu, chociaż wymagają tego samego komponentu tooltip.js. Tak, są bardziej stylizowane, ale nie powodują, że przyciski interfejsu JQuery stają się niewyraźne.
Używam interfejsu JQuery tylko do niestandardowego autouzupełniania / komboboksów (więc nie mogę twierdzić, że inne kontrolki JQ-UI są w porządku) i żadna z powyższych nie rozwiązała problemu CSS na przyciskach combobox, które stały się „niestylowane” podczas wywoływania podpowiedzi BS. Przejście na BS Popovers zapewniło zasadniczo ten sam efekt, bez konfliktów, bez zmiany kolejności importowanych przeze mnie skryptów i bez wyraźnych instrukcji pomostowych.
źródło
spróbuj użyć jQuery.noConflict () i zobacz, czy to w ogóle Ci pomoże. Wygląda na to, że bootstrap i jQuery używają tej samej przestrzeni nazw i być może podpowiedzi bootstrap i jQuery są ładowane do tej samej funkcji lub jedna jest ładowana jako pierwsza.
Możesz również sprawdzić, która biblioteka jest ładowana jako pierwsza. Zwykle, jeśli deklarujesz tę samą funkcję dwukrotnie w javascript, druga jest tą, która jest używana.
Po trzecie, sprawdź pakiet jQueryUI ( na ich stronie internetowej) i zobacz, czy możesz pobrać wersję, która nie ma dołączonych podpowiedzi (sprawdziłem i jest to całkowicie wykonalne).
źródło
Jest łatwe i dobre rozwiązanie, po prostu przestaw swój bootstrap i link do pliku interfejsu jquery w następujący sposób:
Po prostu załaduj jQueryui przed załadowaniem pliku boostrap js. To dla mnie praca.
źródło
Prostym sposobem jest załadowanie bootstrap.js po jquery-ui.js, tak aby bootstrap .tooltip przesłaniał interfejs jquery. Jeśli używasz modułu ładującego, takiego jak requirejs, możesz uzależnić bootstrap od jquery-ui, na przykład:
źródło