Professzionális kliens oldali webfejlesztés jQuery alapokon

Slides:



Advertisements
Hasonló előadás
HTML enhanced for web apps! Fodor Krisztián
Advertisements

JQuery 8. előadás.
Bevezetés a jQuery használatába
Grafikus tervezőrendszerek programozása 10. előadás.
Felhasználói felületek és üzleti logika Bollobás Dávid ASP.NET
DKA Képalbum Egy webkettes alkalmazás fejlesztése QxTransformer/qooxdoo eszközökkel Vitéz Gáborné – Drótos László – Moldován István – Simon Jennifer (Vitéz.
SZENT ISTVÁN EGYETEM GAZDASÁG- ÉS TÁRSADALOMTUDOMÁNYI KAR KUTATÓK ÉJSZAKÁJA SZEPTEMBER 24. AUTO-SZŰRŐ FEJLESZTÉSE OLAP JELENTÉSEK UTÓLAGOS, OFFLINE.
SZENT ISTVÁN EGYETEM GAZDASÁG- ÉS TÁRSADALOMTUDOMÁNYI KAR TUDOMÁNYOS DIÁKKÖRI KONFERENCIA NOVEMBER 25. AUTO-SZŰRŐ FEJLESZTÉSE OLAP JELENTÉSEK UTÓLAGOS,
HTML5 alapú fejlesztő és futtató környezet megvalósítása
JQuery Kocsis Roland
ASP.NET MVC 3 platform áttekintés
JavaScript.
A CLIPS keretrendszer CLIPS "C" Language Integration Production System.
HTML nyelv.
1 WEB TECHNOLÓGIÁK A JavaScript. 2 Bevezetés HTML dokumentumba beágyazott végrehajtható programok készítésére Kliens oldali, (JavaScript kompatibilis)
STÍLUSOK Tulajdonságok és értékek. Színek megadási módjai H1 {color: #CCF150} H1 {color: rgb(204,241,80)} H1 {color: rgb(80%,95%,30%)} H1 {color: red}
© BZ, 2006Stíluslapok használata1 Váltsunk stílust! Stíluslapok a webszerkesztésben.
Hernyák Zoltán XML és HTML.
Közös kinézet Mester oldal, témák, skin-ek, css Webalkalkalmazás fejlesztése ASP.NET-ben Krizsán Zoltán.
Kliensoldali Programozás
Lénárt Anett egyetemi adjunktus - PTE PMMK Rendszer- és Szoftvertechnológia Tanszék Előadás JavaScript Tananyag: W eb - programozás.
Webszerkesztés Stíluslapok (CSS).
Webszerkesztés Űrlapok a HTML-ben. Űrlap létrehozása Űrlapunk tartalma a … elemek között fog helyetfoglalni Egy lapon több űrlap is elhelyezhető Több.
VFP Form programozás Form szerkesztő elemei vezérlő elemek
WEB Technológiák WEB-DB és XML ME Általános Informatikai Tsz. dr. Kovács László.
JavaScript a gyakorlatban. 7. Gyakorlat DHTML  Fa-struktúrájú menük létrehozása  Legördülő menük létrehozása.
JavaScript a gyakorlatban
PHP III. Fájlok, űrlapok.
Multimédiás programok készítése Macromedia Director rendszerben 2. előadás Készítette: Kosztyán Zsolt
CSS.
Orovecz János Tartalomjegyzék  Az Ajax története  HTTP-kérések és válaszok  XMLHttp-kérések  Egyéb Ajax technika  XML.
Az AJAX technológia használata Ez az előadó neve beosztása vállalata.
Bátyai Krisztián NetAcademia Oktatóközpont oktató, fejlesztő MCT, MCPD
Formanyomtatványok létrehozása Dreamweaverrel E-business 6. előadás.
XHTML – a tanultak összefoglalása
Űrlapok és keretek.
Rendezések és szövegkezelő függvények
Űrlapok.
Kereskényi Róbert MSDN Kompetencia Központ Budapesti Műszaki és Gazdaságtudományi Egyetem Automatizálási és Alkalmazott Informatikai.
Objektum orientált programozás a gyakorlatban
CSS A CSS bemutatása.
HTML nyelv.
Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú,
Script nyelvek alkalmazása a webkartográfiában 1/14 Script nyelvek alkalmazása a webkartográfiában Gede Mátyás MFTTT, március 22.
3. előadás.  Apache szerver tudnivalók  Az index.php .htaccess – web-szerverünk beállításai  Konfigurációs állományok  Adatbázis kapcsolódás beállítása.
Web-grafika II (SVG) 7. gyakorlat Kereszty Gábor.
HTML 2. Űrlapok
További lehetőségek Weblapok programozása. Nyelvek csoportosítása Leíró nyelv (HTML, XML, …) Programozási nyelv  Szerver oldali (PHP, ASP, …)  Kliens.
1. Főoldal Letisztult minimális dizájn a gyorsabb betöltés érdekében Legújabb képek.
Webprogramozó tanfolyam
A Visual Basic nyelvi elemei
Webprogramozó tanfolyam Űrlapok (form-ok). Űrlapok a HTML-ben Biztosan mindenki találkozott már vele – Űrlap példapélda Felhasználási lehetőségei – Regisztráció,
Illés Zoltán ELTE Informatikai Kar
Spanyolország gyöngyszeme: GRANADA Egy hobby portál kivitelezése.
Java web programozás 2..
Weboldalba ágyazott interaktív feladatok GeoGebra módra Papp-Varga Zsuzsanna ELTE IK Média- és Oktatásinformatika Tanszék
TÁMOP /1-2F Informatikai gyakorlatok 11. évfolyam Windows Forms alkalmazás készítése Czigléczky Gábor 2009.
Pinczel Balázs, ELTE IK, április Emlékeztető: NoSQL Célok: Nagy teljesítmény Magas rendelkezésre állás Elosztott működés Következmények:
Webprogramozó tanfolyam
Programozás III. Felhasználóifelület-elemek fontosabb tulajdonságai, eseményei, metódusai Preview események.
ListBox CheckedListBox TextBox
YUI február YUI szeptember YUI3
A CLIPS keretrendszer
Adatkötés Sablonokkal
Cascading Style Sheet.
Bevezetés a JQuery használatába
JavaScript a böngészőben
Html parancsok.
JavaScript a böngészőben
Függvénysablonok használata
Előadás másolata:

Professzionális kliens oldali webfejlesztés jQuery alapokon Gincsai Gábor Egy markup -> sötét múlt elrejtése (kompatibilitás) gincsai@aut.bme.hu BME - AAIT

Miről lesz szó… A jQuery létjogosultsága, célja és koncepciója Selectorok, HTML manipuláció, események kezelése AJAX és a jQuery Pluginek jQuery UI jQuery templates Data Link

Kis történelem The Write Less, Do More, JavaScript Library 2006 óta Nyílt forráskódú JavaScript könyvtár Egyszerű interakció a HTML-lel Rengeteg plugin Microsoft is fejleszt pluginokat Visual Studióban van IntelliSense támogatás John Resig

Első használat előtti teendők Letölthető a jQuery honlapjáról Van hozzá CDN (Microsoft-os is) Webes projectekben van. *.js – Debug verzió *.min.js – Minimalizált változat *.vsdoc – VS Inellisensehez kell Csak 1.4.4-es van a project sablonban http://jquery.com

Hogyan aktualizáljuk a verziót CDN, NuGet CDN: http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.2.min.js Referenciát kell csak átírni Ilyenkor nincs vsdoc  NuGet package jQuery (Add Library package) jQuery.vsdoc (Package manager)

Hogyan használjuk mindezt hatékonyan? http://jquerysnippets.codeplex.com/

Kiválaszt  Cselekszik A jQuery koncepciója Mágikus $() függvény Kiválaszt  Cselekszik Láncolhatóság

Egyszerű és összetett selectorok Minden: $("*") Tag: $("table") Id: $("#tableHeader") Css: $(".active") Összetett Tag és css: $("tr.active") Tag és Id: $("table#tableHeader") Id vagy css: $("#tableHeader, .active")

Hierarchikus selectorok Leszármazottak ( ) $("#row1 td") A B C - 1-2 1-0 2-2 3-2 1-1 0-1

Hierarchikus selectorok Leszármazottak ( ) $("#row1 td") Gyerekek (>) $("tr > td") A B C - 1-2 1-0 2-2 3-2 1-1 0-1

Hierarchikus selectorok Leszármazottak ( ) $("#row1 td") Gyerekek (>) $("tr > td") Következő (+): $("#cellBB + td") A B C - 1-2 1-0 2-2 3-2 1-1 0-1

Hierarchikus selectorok Leszármazottak ( ) $("#row1 td") Gyerekek (>) $("tr > td") Következő (+): $("#cellBB + td") Testvérek (~) $("#cellAA ~ td") A B C - 1-2 1-0 2-2 3-2 1-1 0-1

$("div[id^='mai']") $("div[id$='ain']") $("div[id*='ai']") Szűrések Index alapján Első/utolsó: $("tr:first") $("tr:last") Index kisebb/nagyobb mint: $("tr:lt(2)") $("tr:gt(2)") Index egyenlő: $("tr:eq(2)") Láthatóság alapján Látható/rejtett: $("div:visible") $("div:hidden") Attribútum alapján Van olyan attribútuma: $("div[id]") Az attribútum értéke egyenlő: $("div[id='main']") Az attribútum értéke kezdődik / végződik / tartalmazza: $("div[id^='mai']") $("div[id$='ain']") $("div[id*='ai']")

Szelektorok és filterek Selectorok Jelölőnégyzet $("input:checkbox") Rádió gomb $("input:radio") Gomb $(":button") Szöveg beviteli mező $(":text") Filterek Bepipált $("input:checked") Kiválasztott $("input:selected") Engedélyezett $("input:enabled") Letiltott $("input:disabled")

Legördülő menü kiválasztott elem <select name="cities"> <option value="1">Budapest</option> <option value="2" selected="selected">Nyíregyháza</option> <option value="3">Debrecen</option> </select> $("select[name='cities'] option:selected").val()

Selectorok és filterek

HTML dokumentum bejárása

jQuery vagy DOM elem A selectrok jQuery objektumok tömbjét adják vissza. A length visszaadja, hogy mennyi elemet választottunk ki Fontos tudni, hogy DOM vagy jQuery elemet kapunk $("div").length; $("div").get(2); $("div")[2] DOM $("div").eq(2); jQuery

each (fn) Az each(fn) végighívja a megadott függvényt a lista minden elemén A függvény tartalmazhatja a sorszámot, de nem kötelező. fn() vagy fn( index ) Egy tábla minden páros sorához hozzáadja az odd css osztályt $("table tr").each( function(i){ if (i % 2) $(this).addClass("paros"); });

HTML bejárást segítő függvények Szülő(k): .parent(expr) .parents(expr) Testvérek: .siblings(expr) Következő testvér(ek): .next(expr) .nextAll(expr) Előző testvér(ek): .prev(expr) .prevAll(expr) Gyerekek: .children(expr) Leszármazottak: .find(expr)

Mit csinál az alábbi kód? $("tr td").each( function(){ if ( $(this).is(":first-child") ) $(this).addClass("firstCol"); }); $("p").find(".header").hide(); $(".header", $("p")).show();

Mennyire láncolható? $("<li><a></a></li>") .find("a") .html("About") .attr("href", "/Home/About") .andSelf() .addClass("menu") .end() .end() .appendTo("#menu");

HTML manipuláció

HTML elemek értéke val(), html(), text() Jelölőnégyzet értékének lekérdezése $("input:checkbox:checked").val(); Szövegdoboz értékének beállítása $(":text[name='txt']").val("Hello"); Listaelemek beállítása (kiválasztás, vagy bejelölés) $("#lst").val(["NY", "IL", "NS"]); HTML tartalom beállítása $("p").html("<div>Hello $!</div>"); $("div.a").text($("div.b").html());

CSS osztályok manipulálása addClass(), removeClass(), toggleClass(), hasClass() CSS osztály hozzáadás és leszedése $("p").removeClass("blue").addClass("red"); $("div").toggleClass("main"); Lekérdezés, hogy rendelkezik-e egy CSS osztállyal if ($("div").hasClass("main")) { //… } CSS attribútum lekérdezése / beállítása $("div").css("background-color"); $("div").css("float", "left");

HTML elemek beszúrása / módosítása append(), prepend(), replaceWith(), replaceAll() Új HTML elem beszúrása: append(To) / prepend(To) $("h1").append("<li>Hello $!</li>"); $("<li/>").html("1").prependTo("ul"); HTML elem lecserélése $("h1").replaceWith("<div>Hello</div>"); $("<div>Hello</div>").replaceAll("h1");

Csere megmaradó tartalommal $("h3").each(function() { $(this).replaceWith("<div>" + $(this).html() + "</div>"); });

HTML elemek törlése empty(), remove() Kiválasztott elem tartalmának törlése $("#tableHeader").empty() Kiválasztott elemek törlése $("p.header").remove() $("p").remove(":not(.red)") Kiválasztott elemek pozíciójának módosítása $("p").remove().appendTo("#main")

HTML attribútumok kezelése $("a").attr("href","home.htm"); $("button").removeAttr("disabled"); $("img").attr({"src" : "/images/smile.jpg", "alt" : "Smile" }); $("div").css({ "color" : "blue", "margin-right" : "10px" marginLeft : "10px"});

Alapértelmezés szerint minden pixel (px) Szélesség és pozíció Szélesség lekérdezésének lehetőségei: Elem szélessége: .width() .height() Belső szélesség: .innerWidth() .innerHeight() Szélesség a kerettel: .outerWidth() .outerHeight() Teljes szélesség: .outerWidth(true) .outerHeight(true) Pozíció meghatározása A dokumentumtól: $("div").offset().top; A szülő elemtől: $("div").position().left; Csúszka pozíció: $(window).scrollTop(); Alapértelmezés szerint minden pixel (px)

HTML manipuláció

Események

jQuery események Böngésző események Dokumentum betöldősése error(), resize(), scroll() Dokumentum betöldősése load(), ready(), unload() Esemény fel és leiratkozások (un)bind(), (un)delegate(), one(), live(), die(), trigger(), proxy Űrlap eseményei blur(), change(), focus(), select(), submit() Billentyűzet események focusin(), focusout(), keydown(), keyup(), keypress() Egér események click(), dbclick(), hover(), mousedown(), mouseup(), mouseenter(), mouseleave(), mousemove(), moseover(), toggle()

Feliratkozás egy elem eseményre preventDefault(), stopPropagation(), bind(), one(), live() A false visszatérési érték ugyanaz, mintha meghívnánk a .preventDefault() és .stopPropagation() .bind() mindig lefut, .one() első lefutás után leiratkozik automatikusan az eseményről. .live() azokra az elemekre is lefut, amit később adunk az oldalhoz. A .die()-al tudjuk eltávolítani. $(document).ready(function () { $('#foo').bind('click', function (event) { alert('Katt (' + event.pageX + ', ' + event.pageY + ')' ); });

Események delegálása A .delegate() működése hasonló a .live() műköséséhez. Annyiban tér el, hogy a gyökér elemet, amihez a handler kötődik mi adjuk meg. $("table").delegate("td", "hover", function () { $(this).toggleClass("hover"); }); $("table").each(function () { $("td", this).live("hover", function () { $(this).toggleClass("hover"); }); });

$("div").trigger("click"); Események kiváltása manuálisan trigger(), triggerHandler() Tetszőleges eseményt a .trigger() tud kiváltani Böngésző eseményekre is működik Saját eseményeket is kiválthatunk A .trigger()-rel kiváltott események is felgyűrűznek. A .triggerHandler()-rel is kiválthatunk eseményeket, ám Ezek nem gyűrűznek tovább és nem fut le a default eseménykezelő Csak az első egyező esemény fog lefutni $("div").trigger("click"); $("#new").click(function () { $("input").triggerHandler("focus"); });

jQuery események

AJAX és a jQuery

$("div").load("test.php #mainDiv"); Egy oldal letöltése .load() Egy oldal tartalmának letöltése egy HTML elembe .innerHTML-t használ, (<html>, <title>, <head> szűrés) Same origin szabály Ha adunk át paramétert, akkor POST egyébként GET. Az oldal egy darabjának letöltése is képes $("div").load("test.aspx"); $("#content").load("getcontent.aspx", {"i":"33", "type":"main" } ); $("div").load("test.php #mainDiv");

$.ajax() Bonyolult testre szabott AJAX-os lekérdezésekhez. global: globális események ne süljenek el (ajaxStart/ajaxStop) dataType: xml, json(p), html, text, script bodyContent = $.ajax({ url: "script.php", global: false, type: "POST", data: ({ id: this.getAttribute('id') }), dataType: "html", async: false, success: function (msg) { alert(msg); } } ).responseText;

$.ajax() rövidebb / egyszerűbb formái $.get(): HTTP GET $.post(): HTTP POST $.getScript(): Szkriptet tölt le és futtat $.getJSON(): JSON adathalmazt tölt le

jQuery UI Aktuális verzió: 1.8.11 http://jqueryui.com Widget-ek Accordion, Autocomplete, Button, Datepicker, Dialog, Progressbar, Slider, Tabs Interakciók Draggable, Droppable, Resizable, Selectable, Sortable Effektek, animációk Segédosztályok Position

jQuery Templates BETA http://api.jquery.com/category/plugins/templates/ Egyirányú adatkötés sablonokkal

jQuery Templates <!-- Helyőrző a teljes listához --> <ul id="movieList"></ul> <!-- Egy elem sablonja, helyőrzőkkel az adatoknak --> <script id="movieTemplate" type="text/x-jquery-tmpl"> <li><b>${Name}</b> (${ReleaseYear})</li> </script> <script type="text/javascript"> // A megjelenítendő adatok var movies = [ { Name: "The Red Violin", ReleaseYear: "1998" }, { Name: "Eyes Wide Shut", ReleaseYear: "1999" }, { Name: "The Inheritance", ReleaseYear: "1976" } ]; // Renderelés $( "#movieTemplate" ).tmpl( movies ).appendTo( "#movieList" );

jQuery Data Link http://api.jquery.com/category/plugins/data-link/ Objektumok tulajdonságainak egymáshoz kötése Ha az egyik változik, frissül a másik var hallgato = {}; // Adat objektum $("form").link(hallgato); // Kötés egy űrlaphoz $("[name=kernev]").val("Béla"); // Űrlap kitöltése alert(hallgato.kernev); // Adat objektumba bekerül

jQuery Template és AJAX

Összefoglalás Amiről szó volt… Egyszerű, könnyen tanulható Gyorsan készíthető gazdag felhasználói felület Kész pluginek használata Kiterjeszthető ASP.NET MVC-vel is használható Ajaxos hívások esetén közvetlenül hívható controller JsonResult Folyamatosan fejlődik