A jQuery csodálatos világa

Három-négy napja ismerkedem vele az API dokumentáció alapján, tényleg olyan hihetetlen, mint mondták mások nekem.
Eddig ProtoypeJS-t nyúztam, de pl. Firefox 3-mal a class kiválasztósdi $$('.foo') nemigazán akar(t) működni.

Ez a jQuery hihetetlen, milyen egyszerű. Vegyük példának a formokat:
Mondjuk Smarty sablonokban van pár különböző felépítésű form (másfajta/nevű input, select elemek), de mindegyiknek azonos CSS osztálynevet adsz, '.AjaxEditForm'. Tegyük fel, hogy az összeset szeretnéd elküldés validálni, valamint ajax segítségével történjen a feldolgozásuk.

Nos, jQueryvel ennyi az egész:


$(document).ready(function(){
	$('form.AjaxEditForm').submit( function () { return $(this).ajaxSendForm(); });
});

jQuery.fn.extend({
	validate: function () {
				var count = new Number;
				var emptyFields = new String;
				
				$(':input').each(function () {
					if ($(this).val() == '') {
						emptyFields += 'Üres mező: ' + $(this).attr('name') + '  ';
						++count;
					}
				});
				if (count > 0) {
					alert(emptyFields);
					return false;
				}
				else 
					return true;
			},
	ajaxSendForm: function() {
				var checkForm = $(this).validate();
				if (checkForm == true)
				{
					$.ajax({
						type: "POST",
						url: $(this).attr('action'),
						data: $(this).serialize(),
						success: function(msg) {
							alert('A művelet sikeresen végre lett hajtva!');
						}
					});
				}
				return false;
			}
});

Mindössze 38 sornyi kód, valamint teljesen általános funkciók, a validate() bármely hagyományos formra meghívható önmagában is!
Most már kezdem sajnálni, hogy heteket áldoztam a PrototypeJS-re. Egyszer nekifutottam korábban a jQuerynek, de nem szántam rá elég figyelmet és azt gondoltam, a prototype simán jobb.

Belátom, nagyot tévedtem :)

Hozzászólások

Hétvégén én is dolgoztam vele egy kicsit - nem sokat -, de egyelőre a prototype még mindig jobban tetszik. Igaz, még nem ismerem a jQuery-t eléggé, szóval, lehet, hogy egyszer én is másképp fogom gondolni. :]
--
HUP Firefox extension

A jQuery funkciók jQuery objektumokat adnak vissza és ezeket egymáshoz lehet láncolni. Tehát a hagyományos javascript ezekkel nem fog működni. Hozzá kell szokni az tény, de megéri. Első próbálkozásra épp ezért adtam fel, mert nem ismertem eléggé az api-t és gondoltam ez meg az jó lesz sima js-ben, aztán persze nem működött.
De ha elég időt fordítasz a dokumentációra, akkor mindent meg tudsz majd csinálni jól.

éne csak egyszerűen azt nem értem miért jó smarty-zni.

A fő érvem mellette, hogy nagyon egyszerűen megoldható vele az egyes lapok cachelése.

Én általában csinálok egy (vagy több) fő sablont, ami leírja az egész oldal általános szerkezetét, így ugyanannak az oldalnak kompromisszumok nélkül lehet többfajta, teljesen különböző felépítése is, ami mondjuk felhasználónként állítható.
A többi sablon már lapspecifikusabb, de számomra átláthatóbb, ha a html el van választva a php kódtól. Több stílus esetén meg ha a teljes lap cacheléséről le kell mondani, még ezeket a kisebbeket minden további nélkül lehet.
Valamint segít jobban általánosítani, ezáltal újrafelhasználhatóvá tenni az egyes kódrészleteket és nekem könnyebben karbantartható, átalakítható így a kód.

Én ilyen megfontolásokból használom, ami persze teljesen szubjektív.

csak hogy kiemeljem a lenyeget a hupperek szamara:

Another answer to the question "Why do people think we need a separate template engine?" is the following: the biggest part of the PHP community (and the ASP community, for that matter) knows nothing about software architecture.

...

And can we blame them? Of course not. People who use PHP aren't software developers to begin with.

szoval sajnos kiesett magyarorszag 90% -a :(

+1 :)
nagyon durvan leroviditi a fejlesztesi idot, viszont mivel olyan amilyen, nagyon konnyen bele lehet csuszni optimalizalatlan kodirasba :)
mult heten 1.5 perces kodfutast sikerult leroviditeni par oras szorakozassal 2.5-re :)
egesz konkretan: dom manipulacio (leginkabb stilusozas) volt, egyenkent allitottam be tobbezer cellas tablazatban a bordert, hatterszint, stb-t. 2.5 perc lett, aztan csinaltam par classt, es azokat rendeltem hozza a cuccokhoz...igy cseppet gyorsabb lett :)