Laboratorium 4 Biblioteka JQuery – budowa i implementacja pluginów
Transkrypt
Laboratorium 4 Biblioteka JQuery – budowa i implementacja pluginów
Laboratorium 4 Biblioteka JQuery – budowa i implementacja pluginów W związku z tym, Ŝe framework w postaci biblioteki JQuery został napisany w języku JavaScript zakres jego moŜliwości moŜna więc w łatwy sposób rozszerzać budując własne funkcje rozszerzające - pluginy, które dołączamy do obiektu JQuery. Struktura pluginu rozszerzającego moŜliwości funkcjonalne biblioteki JQuery wygląda następująco: (function($){ $.fn.extend({ nazwa_pluginu: function(options){ var defaults = { // domyślne wartości // moŜna je nadpisać przekazując odpowiednie dane w konstruktorze k1 : v1, k2 : v2 } options = $.extend(defaults, options); // nadpiszą się tu // dla kaŜdego węzła spełaniającego warunki return this.each(function() { // wykonaj ten kod }); } }); })(jQuery); Aby poprawnie stworzyć dodatkowy plugin naleŜy postępować zgodnie z następującymi zasadami: 1. Nazwy plików powinny być formowane następująco: jquery.[nazwa_wtyczki].js. Przykładowo: jquery.nazwa.js. 2. W metodach pluginu this jest referencją (wskazaniem) do aktualnie przetwarzanego obiektu jQuery. 3. Powinno się dołączać wtyczkę do obiektu nadrzędnego poprzez jQuery, a nie $, co uŜytkownikom zwiększa pole manewru we wprowadzaniu zmian z uŜyciem jQuery.noConflict(). 4. W celu uniknięcia problemów z poprawnością kodu po jego wcześniejszej kompresji, wszelkie metody oraz funkcje powinny kończyć się znakiem średnika (;). 5. UŜycie .each pozwala na bezproblemową iteracje po wszystkich elementach drzewa DOM, na których operujemy w metodzie. 6. Metoda domyślnie musi zwracać wartość. Plugin (wtyczkę) biblioteki JQuery moŜemy zdefiniować w naszym skrypcie jako: Funkcję, lub Metodę A. Lewicki – Języki internetowe Do metody odwołujemy się operując na jakimś elemencie, identyfikatorze, bądź na klasie znajdującej się na stronie internetowej, a w przypadku funkcji, po prostu ją wywołujemy w celu wykonania jakieś akcji. Budując plugin dla metody korzystamy z następującego zapisu: jQuery.fn.nazwa = function() { [...] }; i wywołujemy go następująco: $(element).nazwa(); Natomiast budując wtyczkę jako funkcję uŜywamy: jQuery.nazwa = function() { [...] }; a wywołanie to: var x = $.nazwa(); alert(x); Obydwa rodzaje wtyczek moŜemy teŜ parametryzować. Argumentem wtedy moŜe być zwykła zmienna, dowolnego, obsługiwanego przez JavaScript typu lub obiekt przechowujący zbiór pól o konkretnym przeznaczeniu. jQuery.fn.nazwa = function(options) { [...] }; oraz jQuery.nazwa = function(options) { [...] }; Przykład Napisz wtyczkę o nazwie komunikat, której zadaniem będzie umieszczenie w dokumencie tekstu Laboratorium przedmiotu języki programowania. Wtyczkę tą naleŜy następnie wywołać dla akapitu o identyfikatorze #info. Rozwiązanie – umieszczamy w pliku jquery.komunikat.js: $.fn.komunikat = function() { this.each(function() { $(this).html('Laboratorium przedmiotu języki programowania'); }); return this; }; })(jQuery); Wykorzystanie zbudowanego pluginu: A. Lewicki – Języki internetowe <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl"> <head><title>Przykład</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript" src="jquery-1.4.2.js"></script> <script type="text/javascript" src="jquery.komunika..js"></script> <script type="text/javascript"> $(function(){ $('#info').komunikat(); }); </script> </head> <body> <p id=info></p> </body> </html> Ćwiczenie 1 Plik: zadania/plugins/ Cwiczenie1.html Rozwiązanie: zadania/plugins/ Cwiczenie1_finished.html, zadania/plugins/jquery.cw1.js Napisz dwie wtyczki o nazwach: pierwszy oraz ostatni, których zadaniem będzie wyświetlanie napisu ‘Nowy Rok’ dla pierwszego elementu zbioru oraz ‘Sylwester’ dla ostatniego elementu zbioru (listy) . Działanie wtyczek wzbogać poprzez wykorzystanie funkcji css(), animate() oraz fadeOut(). Ćwiczenie 2 Plik: zadania/plugins/ Cwiczenie2.html Rozwiązanie: zadania/plugins/ Cwiczenie2_finished.html, zadania/plugins/jquery.cw2.js Napisz plugin o nazwie czcionka, którego zadaniem będzie zmiana czcionki wszystkich dostępnych elementów zbioru (listy) na czcionkę przekazaną jako parametr funkcji. W rozszerzeniu skorzystaj z funkcji css(). Ćwiczenie 3 Plik: zadania/plugins/ Cwiczenie3.html Rozwiązanie: zadania/plugins/ Cwiczenie3_finished.html, zadania/plugins/jquery.cw3.js Napisz dodatkową funkcję (plugin) o nazwie zmien_kolor, która jako parametr pozwoli na wskazanie obiektu. Funkcja ta powinna wykorzystywać właściwości tekstu, koloru oraz tła do modyfikacji wyglądu elementów struktury strony html. A. Lewicki – Języki internetowe Ćwiczenie 4 Plik: zadania/plugins/ Cwiczenie4.html Rozwiązanie: zadania/plugins/ Cwiczenie4_finished.html, zadania/plugins/jquery.cw4.js Rozszerz moŜliwości pluginu z poprzedniego zadania, tak aby moŜna było wywołać zdefiniowaną funkcję zmien_kolor zarówno nie podając Ŝadnego parametru, jak i z moŜliwością podania jednego parametru będącego napisem oraz będącego obiektem. Ćwiczenie 5 Plik: zadania/plugins/ Cwiczenie5.html Rozwiązanie: zadania/plugins/ Cwiczenie5_finished.html, zadania/plugins/jquery.cw5.js Napisz dodatkowy plugin dla biblioteki JQuery, który przekształci strukturę dostępnego pliku tekstowego o nazwie dane.txt w strukturę w postaci tabeli zgodnej ze znacznikami XHTML. Ćwiczenie 6 Wejdź na stronę o adresie http://plugins.jquery.com i zapoznaj się z funkcjonalnością dostępnych przykładowych wtyczek rozszerzających moŜliwości biblioteki JQuery. Zadanie do samodzielnego wykonania Napisz wtyczkę, która pozwoli na przekazanie jako parametru nazwy dowolnego miesiąca bieŜącego roku, tak aby na stronie moŜna było wyświetlić kalendarz miesięczny (w postaci tabelarycznej) zgodny z przekazanym parametrem. W przypadku braku parametru naleŜy wyświetlić kalendarz miesiąca listopad. A. Lewicki – Języki internetowe