jQuery tooltip plugin
Często podczas pracy, zdarza się potrzeba skorzystania z funkcjonalności, której nie posiadają standardowe biblioteki dostarczone przez platformę .NET. Rozwiązania tego problemu są dwa:
-
napisać rozwiązanie samodzielnie
-
skorzystać z gotowego rozwiązania
Ponieważ jestem przeciwnikiem ponownego odkrywania koła, a po doświadczeniach związanych z pracą (i efektami tej pracy) na kontrolkach firmy DevExpress jestem wielkim fanem korzystania z gotowych rozwiązań wielokrotnie zanim samemu zacznę cokolwiek zacznę kodować, sprawdzam, czy taki problem nie został już przez kogoś innego rozwiązany.
Z uwagi na fakt, iż w mojej obecnej firmie, aktualnie nie posiadamy zakupionych komercyjnych kontrolek firm trzecich, to wykorzystujemy wszelkiego rodzaju rozwiązania dostępne za darmo. Przykładem takich kontrolek, są darmowe pluginy do jQuery. Jednym z takich pluginów jest ‘jQuery tooltip plugin’ udostępniony za darmo na stronie http://bassistance.de/jquery-plugins/jquery-plugin-tooltip/.
Z pluginem tym, spotkałem się w momencie, gdy w jednej z aplikacji, pojawiła się potrzeba dłuższego czasu wyświetlania tooltipa. Opisy pól w tooltipie były na tyle duże, że normalny człowiek w kilka sek. nie był w stanie ich przeczytać.
Rozwiązaniem okazała się darmowa kontrolka, jQuery tooltip plugin, którą tutaj przedstawiam. Główne zalety kontrolki:
-
nielimitowany czas wyświetlania tooltipa
-
możliwość schowania tooltipa w momencie wystąpienia zdarzenia jQuery (podpięcie ‘schowania’ pod event)
-
tooltip oraz jego zawartość określana za pomocą edytowalnej klasy CSS
-
możliwość umieszczania obrazków, ‘image map’ oraz linków w tooltipie.
-
bardzo łatwa obsługa podpinania komponentu do istniejących rozwiązań (plugin przechwytuje istniejącego tooltipa i się pod niego podszywa).
-
licencja MIT pozwalająca na darmowe, komercyjne zastosowanie kontrolek
Samo podpięcie nowego, lepszego tooltipa, do istniejącego rozwiązania z tooltipami jest banalnie proste. Potrzebujemy:
-
dodać do naszego projektu pliki *.js z biblioteką jQuery oraz “jQuery tooltip plugin”
-
umieścić referencje do tych plików, na stronach, na których będziemy się do nich odwoływać (zazwyczaj takie rzeczy umieszcza się w master page)
-
utworzyć nową “pustą” klasę CSS, która będzie nam służyła jako “wskaźnik”, dla każdego typu tooltipa (osobny css dla “obrazków”, osobny dla “zwykłego tekstu” itp.)
-
dodać referencje do pliku *.css w którym znajduje się nasz znacznik, na stronie, na której będziemy korzystać z tego pluginu (zazwyczaj takie rzeczy umieszcza się w master page)
-
do każdego obiektu, w którym ma być użyty extra tooltip, dołożyć klasę css odpowiedniego typu
-
upewnić się, że pliki posiadają wypełnioną właściwość “tooltip” (kontrolki asp.net) lub ‘title’ (kontrolki html).
-
przy uruchamianiu strony, wywołać skrypt aktywujący jQuery plugin tooltip
Na pierwszy rzut oka wydaje się tego sporo, ale w praktyce 90% z tych rzeczy powinno być już “zrobione” wcześniej (tooltipy w kontrolkach, pliki js osobno, pliki css osobno, do tego jakiś master page, z referencjami do tych plików).
Przykładowa kontrolka, z tooltipem wygląda tak:
<asp:TextBox ID=“txtHelper” runat=“server” ToolTip=“tooltipHelper” CssClass=“cssHelper”></asp:TextBox>
Natomiast skrypt, aktywujący tooltipy dla każdego obiektu, który posiada klasę CSS o nazwie “cssHelper” wygląda tak:
$(“document”).ready(function () {
var objs = $(“.cssHelper”);
jQuery.each(objs, function () {
$(”#” + this.id).tooltip();
});
});
P.S. Zachęcam do zapoznania się z projektem. Więcej przykładów znajduje się na stronie projektu w zakładce demo.
Edit:
Aby zrobić “multiline”, czy też “page break” to należy:
$(‘#selector’).tooltip({ content: function () { return $(this).attr(‘title’); } });
I dzięki temu, w tooltipie można skorzystać z