Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM    Subskrybuj kanał ATOM dla tagu jquery Kanał ATOM (tag: jquery)

Autor wpisu: batman, dodany: 07.03.2011 08:30, tagi: jquery, php

jFromer to kolejny interesujący projekt zbudowany na bazie jQuery. Tym razem nie jest to tylko JavaScript. Twórcy jFormer poszli o krok dalej i skorzystali z pomocy PHP, przy pomocy którego generowany jest formularz. Z dostępnych funkcjonalności można wymienić walidację formularza po stronie klienta oraz serwera, czy też przetwarzanie formularza przy pomocy AJAXa. warto również wspomnieć o gotowych szablonach dla najpopularniejszych typów formularzy, ochronie przed robotami oraz możliwości modyfikacji wyglądu formularzy przy użyciu CSS.

Zainteresowanych jFormerem odsyłam do strony projektu – www.jformer.com, a niezdecydowanych do zapoznania się z przykładowymi formularzami – www.jformer.com/demos. Przykładowy kod znajdziecie w dokumentacji – www.jformer.com/documentation.

Autor wpisu: batman, dodany: 25.02.2011 12:00, tagi: jquery

Z serii ciekawe pluginy jQuery zapraszam do zapoznania się z jQuery Waypoints. Jest to bardzo prosty plugin, dzięki któremu mamy możliwość wykonywania funkcji w reakcji na przewinięcie strony do konkretnego miejsca na stronie. Brzmi ciekawie? To sprawdźcie dema:

Dokumentację wraz z przykładami znajdziecie na stronie projektu – http://imakewebthings.github.com/jquery-waypoints/

Autor wpisu: batman, dodany: 23.02.2011 08:00, tagi: jquery

Pluginów jQuery nigdy dosyć. Tym razem natrafiłem na plugin o bardzo wymownej nazwie – Easy Image Zoom, czyli “fajna powiększarka obrazków”. Co jest w niej takiego fajnego? Wyjątkowa prostota użycia i interesujący efekt końcowy.

Opis pluginu znajdziecie na stronie http://cssglobe.com/post/9711/jquery-plugin-easy-image-zoom, a demo pod adresem http://cssglobe.com/lab/easyzoom/easyzoom.html.

Miłej zabawy.

Autor wpisu: batman, dodany: 19.02.2011 08:00, tagi: css, javascript, php, jquery

Czym jest cheet sheat raczej tłumaczyć nie trzeba. Niejednokrotnie zerkałem na tablicę korkową/ścianę karton-gips naszpikowaną licznymi zadrukowanymi kartkami w celu znalezienia tej jednej jedynej, zawierającej odpowiedź na moje pytanie. Ściągawki są szybsze nawet od Google – zawsze pod ręką, nie wymagają do działa dostępu do Internetu (bez prądu też doskonale sobie radzą), zazwyczaj wystarczy rzut oka, by znaleźć rozwiązanie problemu.

Kilka dni temu Wookieb podesłał do mnie linka prowadzącego do strony zatytułowanej 100 + Must Have Cheat Sheets and Quick References For Web Designers and Developers. Nazwa mówi sama za siebie. Setka (a nawet więcej) obowiązkowych ściągawek, bez których żywot developera to droga przez mękę.

Nie przejrzałem wszystkich ściągawek, jednak po sprawdzeniu kilku najbardziej mnie interesujących, śmiało mogę napisać, iż tytuł nie został napisany na wyrost.

Co ciekawego znajdziemy na ściągawkach? Oto lista najciekawszych zagadnień:

  • CSS3
  • HTML5
  • WordPress
  • PHP
  • jQuery
  • czcionki
  • Adobe AIR

Miłej lektury.

Autor wpisu: JoShiMa, dodany: 15.02.2011 23:24, tagi: jquery, javascript

Pracuję ostatnio nad dość ciekawym projektem, który realizuję wykorzystując kohana 2. Mimo mojej szczerej niechęci (ciągle) do JavaScript oraz zupełnej nieznajomości (nie powinnam się przyznawać?) mechanizmów AJAX musiałam się zmierzyć z pewnymi zagadnieniami, których puki co inaczej zrealizować się nie da. Opis problemu W serwisie, który tworzę będzie znajdowała się lista obrazków do których użytkownicy [...]

Autor wpisu: batman, dodany: 14.02.2011 08:00, tagi: javascript, jquery

Wraz z nadejściem jQuery 1.5, programiści otrzymali do swoich rąk szereg funkcjonalności usprawniających pracę z AJAXem. Jedną z nich są obiekty wstrzymane (deferred objects). W dużym skrócie dzięki deferred object możemy przypisać callback do AJAXowego requestu w dowolnym momencie, a nie jak to miało miejsce do tej pory, w momencie tworzenie requestu. Co więcej nie musimy ograniczać się tylko do jednej funkcji zwrotnej.

Jak to się robiło kiedyś…

Przed nastaniem jQuery 1.5 typowy request AJAXowy wyglądał następująco.

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Insert title here</title>
        <script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.5.js"></script>
        <script>
        $(document).ready(function() {
        	$.ajax({
        		url: "ajax.php",
        		type: "POST",
        		success: function(data) {
        			$("#content").append(data);
        		}
        	});
        });
        </script>
    </head>
    <body>
        <div id="content"></div>
    </body>
</html>

W efekcie działania tego nieco uproszczonego przykładu, do diva o identyfikatorze content dodana zostanie zawartość odpowiedzi serwera. Jeśli chcielibyśmy wykonać więcej operacji na zwróconych przez serwer danych oraz uzależnić niektóre operacje od wyniku działania innych funkcji, nieźle byśmy się napocili.

A jak to się robi dziś?

Na szczęście z pomocą przychodzi nam najnowsza odsłona jQuery. W wersji 1.5 opisany powyżej problem rozwiążemy w bardzo prosty sposób

$(document).ready(function() {
	var req = $.ajax({
		url: "ajax.php",
		type: "POST",
		success: function(data) {
			$("#content").append(data);
		}
	});

	/* dużo innych operacji, które muszą się wykonać niezależnie od AJAXa */

	req.success(function(data) {
		/* korzystamy z danych przetworzonych powyżej */

		// zrób coś z danymi z serwera
		$("#content").append(data);
	});
});

Drugi callback success wykona się dopiero w momencie, gdy zakończą się operacje znajdujące się bezpośrednio przed nim. Zmienna data zawierać będzie dokładnie te same dane, co w przypadku pierwszej funkcji callback. W podobny sposób możemy dodać callbacki error oraz complete.

Magia?

Obiekty wstrzymane (deferred object) wykorzystują wzorzec Promises/A. Zakłada on istnienie bytu nazwanego obietnicą (promise), który określa potencjalną wartość zwróconą w wyniku działania jakiejś operacji. Obietnica może znajdować się w jedenym z trzech stanów – niespełniona, spełniona, zakończona niepowodzeniem, przy czym zmiana stanu może nastąpić tylko raz: z niespełnionej na spełnioną lub z niespełnionej na zakończoną niepowodzeniem. W momencie gdy obietnica znajdzie się w stanie spełniona lub zakończona błędem, zmiana stanu nie może już mieć miejsca. Dzięki takiemu zachowaniu obietnic, dane zwrócone do callbacka pozostają niezmienne niezależne od miejsca, w którym do tych danych się odwołujemy.

W celu umożliwienia korzystania z wspomnianej przed chwilą funkcjonalności, jQuery zostało wyposażone w obiekt Deferred. To co się dzieje “behind the scenes”, wygląda łudząco podobnie do typowego wywołania metody ajax.

function funkcja1()
{
	var dfd = $.Deferred();
	dfd.resolve("ok");
	return dfd.promise();
}

function funkcja2()
{
	var dfd = $.Deferred();
	dfd.reject("my bad");
	return dfd.promise();
}

$.when(funkcja1(), funkcja2())
	.fail(function() {
		console.debug("co najmniej jedna funkcja sie wywaliła");
	})
	.done(function() {
		console.debug("wszystkie funkcje są ok");
	})
	.then(function() {
		console.debug("ok");
	}, function() {
		console.debug("coś poszło nie tak");
	});

Powyższy przykład nie jest może zbyt funkcjonalny, ale idealnie pokazuje zasadę działania obiektu Deferred. Metoda when przyjmuje jako argumenty dowolną ilość funkcji, których stan chcemy monitorować. Do obiektu zwróconego przez metodę when dodajemy handlery uruchamiane w momencie gdy wszystkie funkcje zakończą swoje działanie sukcesem (handler dome) lub co najmniej jedna z nich zakończy się niepowodzeniem (fail). Handler then przyjmuje dwa parametry. Pierwszym jest funkcja wykonywana w przypadku sukcesu, drugim funkcja wykonywana w momencie niepowodzenia.

Skąd metoda $.when wie czy monitorowane funkcje zakończyły się sukcesem lub porażką? Informuje ją o tym obiekt Deferred, który zwraca opisaną wcześniej obietnicę. Nim obietnica zostanie zwrócona, należy ustawić jej stan przy pomocy jeden z dwóch metod – resolve dla poprawnego sukcesu oraz reject dla porażki.

Słowo końcowe

Przedstawione powyżej informacje na temat deferred objects to tylko wierzchołek góry lodowej, której cały obraz ujrzycie po lekturze dokumentacji. Warto również zapoznać się z tym wpisem. Znajdziecie w nim szereg interesujących przykładów.

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: batman, dodany: 04.02.2011 08:00, tagi: javascript, jquery

Przed kilkoma miesiącami na oficjalnym blogu jQuery pojawiła się informacja na temat powstania trzech nowych pluginów, które zostały zaakceptowane jako oficjalne rozszerzenia jQuery. Były to jQuery Templates, jQuery Data Link oraz jQuery Globalization. Według podanej wówczas informacji jQuery Templates miał trafić do głównej biblioteki jQuery wraz z pojawieniem się wersji 1.5. Najwyraźniej ekipa pracująca nad tym pluginiem nie zdążyła na czas i w wydanej kilka dni temu bibliotece, nie uraczymy szablonów. Nic nie stoi jednak na przeszkodzie, aby pobrać ten plugin osobno i już dzisiaj zacząć poznawanie jego możliwości.

Instalacja

Instalacja plginu jest tak samo banalna jak instalacja samego jQuery i sprowadza się do pobrania jego najnowszej wersji ze strony https://github.com/jquery/jquery-tmpl. Następnie wystarczy dołączyć plugin do strony.

Pierwszy szablon

Zanim zaczniemy zagłębiać się w szczegóły szablonów, rzućcie okiem na poniższy kod.

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<script src="jquery-1.5.min.js"></script>
		<script src="jquery.tmpl.min.js"></script>
		<script id="szablon" type="text/x-jquery-tmpl">
			<tr>
				<td>${nazwa}</td>
				<td>${cena}zł</td>
				<td><a href="/usun?id=${id}">usuń</a></td>
			</tr>
		</script>
		<script>
		$(document).ready(function() {
			var produkty = [
				{ id: 1, nazwa: "Spodnie", 	cena: "100" },
				{ id: 2, nazwa: "Buty", 	cena: "250" },
				{ id: 3, nazwa: "Okulary", 	cena: "90" },
				{ id: 4, nazwa: "Worek", 	cena: "1" }
			];

			$("#szablon").tmpl(produkty).appendTo("#produkty tbody");
		});
		</script>
	</head>
	<body>
		<table id="produkty">
			<thead>
				<tr>
					<th>Nazwa</th>
					<th>Cena</th>
					<th>Akcja</th>
				</tr>
			</thead>
			<tbody>
			</tbody>
		</table>
	</body>
</html>

To co widzicie to najprostszy przykład zastosowania szablonów jQuery. Wszystko sprowadza się do stworzenia szablonu HTML w znaczniku script, któremu nadajemy identyfikator (w tym przypadku identyfikatorem jest słowo szablon). Oprócz identyfikatora znacznik ten musi posiadać odpowiedni typ. Jest nim text/x-jquery-tmpl. W przypadku problemów z przeglądarkami, które nie będą poprawnie interpretować tego atrybutu można stosować text/html.

Tagi szablonów oraz nowe metody

W chwili obecnej do jQuery wprowadzone zostały następujące tagi.

  • ${} lub ${{= }} – służy do wstawiania do szablonu danych tekstowych
  • {{html }} – służy do wstawienia danych w postaci html
  • {{if}}, {{else}}, {{/if}} – podstawowa instrukcja warunkowa
  • {{each}} – pętla
  • {{tmpl}} – renderowanie szablonu w szablonie
  • {{wrap}} – możliwość opakowania jednego szablonu innym

Oprócz tagów, do jQuery wprowadzone zostały nowe funkcje. Są to:

  • .tmpl() – metoda wywoływana na szablonie. Przyjmuje dwa parametry – dane oraz opcje. Dane mogą zostać przekazane na dwa sposoby. W pierwszym z nich będzie to obiekt, którego klucze będą stanowić zmienne dostępne w szablonie. W drugim sposobie można przekazać tablicę obiektów. Wówczas szablon zostanie wyrenderowany tyle razy, ile elementów będzie miała tablica. Opcje służą do przekazania do szablonu dodatkowych danych. W wyniku działania tej metody uzyskamy kolekcję elementów, które możemy wstawić do drzewa DOM przy pomocy metod .appendTo, .prependTo, .insertBefore oraz .insertAfter.
  • jQuery.tmpl() – działa na podobnej zasadzie jak poprzednia metoda, z tą różnicą, że pierwszym argumentem jest treść szablonu, drugim dane, a trzecim opcje.
  • .tmplItem() oraz jQuery.tmplItem() – metody, dzięki którym uzyskamy dostęp do danych wyrenderowanego elementu na podstawie szablonu oraz wszystkich informacji powiązanych z tym elementem
  • .template() oraz jQuery.template() – metody te umożliwiają na “skompilowanie” szablonu do postaci nazwanego szablonu (named template), do którego możemy się odwoływać po jego nazwie.

Ponieważ w teorii wszystko zawsze wydaje się być bardziej skomplikowane niż to jest w rzeczywistości, przejdźmy do przykładów.

${}

W miejsce tego taga wstawiona zostanie zawartość przypisana pod klucz obiektu przekazanego jako dane do szablonu.

<script id="szablon" type="text/x-jquery-tmpl">
	<p>${pole}</p>
</script>
<script>
$(document).ready(function() {
	$("#szablon").tmpl({ pole: "zawartosc"}).appendTo("#element");
});
</script>
<div id="element"></div>

Zamiast ${pole} możemy napisać {{= pole}} i efekt będzie identyczny.

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.