2009-11-10 04:55:58

Co mogę zrobić z jQuery?

Framework (biblioteka?) jQuery zyskuje sobie coraz większą popularność. Nadal jednak wiele osób nie do końca wie, co to jest i jak tego używać. JQuery jest lekką biblioteką JavaScript często nazywaną frameworkiem. W rzeczywistości jest to jeden plik, który można pobrać z adresu http://code.google.com/p/jqueryjs/downloads/detail?name=jquery-1.3.2.js. Zapisujemy go w katalogu głównym strony i włączamy go umieszczając w sekcji nagłówkowej strony linijkę:

<script type =”text/javascript” src=”jquery-1.3.2.js”></script>

Tworzymy kolejny plik z rozszerzeniem „js” np. test.js i doÅ‚Ä…czamy go do strony w podobny sposób jak bibliotekÄ™:

<script type =”text/javascript” src=”test.js”></script>

Ważne jest, by biblioteka była włączona jako pierwsza, w przeciwnym razie nie będzie widoczna w pliku test.js

PiszÄ…c ten artykuÅ‚ zakÅ‚adam, że dysponujesz wiedzÄ… i umiejÄ™tnoÅ›ciami przynajmniej na poziomie szkolenia wideo „Twoja wÅ‚asna prywatna strona wizytówka”, które jest umieszczone na tej stronie w dziale „Sekrety Webmasterów”.

Na początku wstawimy na stronę cztery bloki div i w każdym z nich umieszczamy krótki tekst np. div1, div2, itd. Na stronie te teksty powinny ułożyć się jeden pod drugim. Pod blokami div umieścimy listę nieuporządkowaną. Kompletny kod xhtml powinien wyglądać tak:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl">
<head>
	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
	<title>Serwan. Co mogę zrobić z jQuery?</title>
	<script type ="text/javascript" src="jquery-1.3.2.js"></script>
	<script type ="text/javascript" src="test.js"></script>
</head>
<body>
	<div>div1</div>
	<div>div2</div>
	<div>div3</div>
	<div>div4</div>
 
	<ul style="clear: left;">
		<li>Moduł 1: Twoja własna strona WWW wizytówka.</li>
		<li>Moduł 2: Squeeze page</li>
		<li>Moduł 3: Twoja super oferta</li>
		<li>Moduł 4: Galeria internetowa</li>
		<li>Moduł 5: Katalog Twoich produktów</li>
		<li>Moduł 6: Portal społecznościowy</li>
	</ul>
</body>
</html>

Teraz w pliku test.js piszemy:

$(document).ready(function()
{
	$('div').css({'margin': '12px', 'border': 'solid 2px #006600', 'padding': '10px', 'width': '20%', 'background-color' : '#99ffcc', 'font-weight' : 'bolder'})
});

PoczÄ…tkiem każdego skryptu jQuery jest wywoÅ‚anie funkcji $(). $() jest tak naprawdÄ™ aliasem funkcji głównej frameworka – jQuery(). WywoÅ‚anie $() zwraca obiekt, na rzecz którego wywoÅ‚ujemy metodÄ™ ready(). Parametrem metody ready() jest funkcja anonimowa, czyli pozbawiona nazwy. Jej definicja wystÄ™puje w miejscu wywoÅ‚ania. Funkcja, która jest parametrem metody ready() jest wywoÅ‚ywana natychmiast po wczytaniu caÅ‚ej strony html/xhtml. NastÄ™pnie pobieramy kolejny obiekt lub obiekty posÅ‚ugujÄ…c siÄ™ selektorami. W tym przypadku selektorem jest div czyli wszystkie elementy <div></div> na aktywnej stronie. Dla wybranego obiektu/obiektów wywoÅ‚ujemy metodÄ™ css(), która ustawia dla tych obiektów style css zdefiniowane w argumencie metody.

Nie jest to nic niezwykłego. Podobny efekt można osiągnąć używając stylów css. Czasem jednak i taka możliwość może się przydać, np. przy uzależnieniu stylów od tego, czy przeglądarka obsługuje JavaScript, czy nie.

Kolejne instrukcje również wpisujemy wewnÄ…trz funkcji bÄ™dÄ…cej argumentem metody ready(), czyli przed koÅ„cowymi nawiasami „});”. Tym razem zmienimy poÅ‚ożenie bloków div w reakcji na zdarzenie klikniÄ™cia w dowolnym obszarze strony czyli na elemencie body.

$('body').click(function()
{
	$('div').css({'float': 'left'});
});

Po najechaniu kursorem myszy na jeden z bloków div, wywołujemy dla niego animowane przekształcenie do podanych w argumencie metody animate() stylów.

$('div').mouseenter(function()
{
	$(this).animate({padding: '18px', margin: '8px', borderWidth: '4px'}, 300);
});

Podobnie możemy zrobić przy opuszczeniu bloku div.

$('div').mouseleave(function()
{
	$(this).animate({padding: '10px', margin: '20px', borderWidth: '2px'}, 200);
});

KlikajÄ…c na jeden z bloków możemy ukrywać i pokazywać listÄ™ ul z zastosowaniem różnych efektów. Każdy blok div prezentuje inny efekt. Aby bloki byÅ‚y rozróżniane, należy dodać do nich identyfikatory: a, b , c i d. Identyfikator klikniÄ™tego wÅ‚aÅ›nie bloku pobieramy przy pomocy metody attr() i wstawiamy do zmiennej atrybut. ZmiennÄ… tÄ™ sprawdzamy w instrukcji switch i dla odpowiednich wartoÅ›ci wywoÅ‚ujemy odpowiednie części kodu. Instrukcja if($(‘ul’).is(‘:hidden’)) sÅ‚uży do sprawdzenia, czy lista zostaÅ‚a ukryta, czy też nie.

$('div').click(function()
{
	var atrybut=$(this).attr('id');
	switch(atrybut)
	{
		case 'a':
			if($('ul').is(':hidden'))
			{
				$('ul').show(700);
			}
			else
			{
				$('ul').hide(1600);
			}
			break;
		case 'b':
			if($('ul').is(':hidden'))
			{
				$('ul').slideDown(700);
			}
			else
			{
				$('ul').slideUp(1600);
			}
			break;
		case 'c':
			if($('ul').is(':hidden'))
			{
				$('ul').fadeIn(700);
			}
			else
			{
				$('ul').fadeOut(1600);
			}
			break;
		case 'd':
			$('ul').fadeTo(1700, 0.10).fadeTo(700, 0.90);
			break;
	}
});

Teraz przejdziemy do elementów li listy ul. Zapis ‘li:first’ wybiera pierwszy element li. Po przesuniÄ™ciu kursorem myszy nad tym elementem wszystkie parzyste elementy listy (elementy sÄ… indeksowane od 0) zostanÄ… zformatowane przy pomocy zadeklarowanych stylów (‘li:even’ oznacza elementy parzysta).

$('li:first').mousemove(function()
{
	$('li:even').css({'background-color': '#99ccff'});
});

Zapis ‘li:last’ wybiera ostatni element li. Po przesuniÄ™ciu kursorem myszy nad tym elementem wszystkie nieparzyste elementy listy zostanÄ… zformatowane przy pomocy zadeklarowanych stylów (‘li:odd’ oznacza elementy nieparzysta).

$('li:last').mousemove(function()
{
	$('li:odd').css({'background-color': '#ffccff'});
});

Zastosowań i możliwości jQuery jest o wiele więcej. Często jQuery wykorzystuje się do efektownej prezentacji grafiki, prezentacji komunikatów, wstępnej validacji formularzy i do prostego posługiwania się technologią AJAX. Do jQuery napisano też wiele interesujących pluginów.

Tagi: ,

7 odpowiedzi do “Co mogÄ™ zrobić z jQuery?”

  1. Maciek pisze:

    Witam
    Bardzo ciekawy przykład przy czym osoby przyzwyczajone do pisania CSS w osobnym pliku mogą czuć delikatny dyskomfort w definiowaniu stylu w funkcjach js.
    Chciałbym zapytać jak najwygodniej jest połączyć powyższą funkcję z szablonem .css.

    Pozdrawiam,
    Maciek

  2. Leszek Sewastianowicz pisze:

    Generalnie w w pliku css powinny być zdefiniowane style, które chcemy nadać stronie na stałe. Poprzez jQuery możemy tymi stylami manipulować, ewentualnie ustawić na starcie określone parametry, które będą wykorzystywane później przez jQuery, a które byłyby zupełnie zbędne w przypadku wyłączonego JavaScriptu.

  3. Maciek pisze:

    SÅ‚usznie, ale należę do grona tych ludzi gdzie ‘manipulowanie stylami’ powinno wÅ‚aÅ›nie odbywać siÄ™ w arkuszu CSS. Eleganckim jest wg. mnie trzymanie osobno formatowania od kodu ;) .
    PrzemyÅ›laÅ‚em sobie sprawÄ™ dokÅ‚adniej i fajnym rozwiÄ…zaniem byÅ‚o zrobienie tablic ze stylami i trzymanie tego w osobnym pliku – taki kompromis. Zastosowanie mojego pomysÅ‚u może być bezsensowne w maÅ‚ych projektach ale przy wiÄ™kszych serwisach może być użyteczne.

    Pozdrawiam,
    M

  4. Leszek Sewastianowicz pisze:

    JednÄ… z zalet jQuery jest prostota manipulowania stylami. Ustawienie stylów na starcie przez jQuery byÅ‚o jedynie zaprezentowaniem takiej możliwoÅ›ci – czasem wystÄ™pujÄ… okolicznoÅ›ci kiedy może siÄ™ to przydać, ale w żadnym razie nie jest to alternatywa wobec plików css. Co do umieszczania tablicy stylów w odrÄ™bnym pliku, to rzeczywiÅ›cie można tego próbować w projektach z dużą iloÅ›ciÄ… kodu jQuery (albo innego JavaScript)

  5. procek pisze:

    jQuery daje nam spore możliwoÅ›ci, ale jak wspomniaÅ‚ Maciek robi zamieszanie. Ja powiem wiÄ™cej – robi straszny baÅ‚agan, jeÅ›li przy jego pomocy bÄ™dziemy odblokowywać różne bloki na stronie. Efekt jak zwykle ten sam: póki dziaÅ‚a jest ok, ale gdy coÅ› siÄ™ popsuje to miÅ‚ego szukania życzÄ™… Sam używam jQuery i wiem jak potrafi czasem nabaÅ‚aganić ;)

  6. Leszek Sewastianowicz pisze:

    Jeżeli jQuery stosować z umiarem i dbać o czytelność i poprawność kodu, to wielu problemów, w tym bałaganu, da się uniknąć.

  7. [...] Nie będę pisał o tym, jak zwiększyć ruch na stronie w sensie ilości użytkowników odwiedzających serwis, tylko o wprowadzeniu ruchomych elementów reagujących na określone zachowania użytkownika. Skorzystam przy tym z dobrodziejstw JavaScriptu i biblioteki jQuery. Jeżeli nie znasz jQuery, przeczytaj Co mogę zrobić z jQuery?. [...]

Dodaj odpowiedź

Musisz się zalogować aby dodać komentarz.