jQuery Succinctly Core jQuery

Basbegreppet bakom jQuery

Medan vissa konceptuella variationer existerar (t ex funktioner som $ .ajax) i jQuery API, är det centrala begreppet bakom jQuery "hitta något, gör någonting". Mer specifikt, välj DOM-element (er) från ett HTML-dokument och gör sedan något med dem med jQuery-metoder. Detta är det stora bildkonceptet.

För att driva detta koncept hem, reflektera över koden nedan.

          

Observera att i detta HTML-dokument använder vi jQuery för att välja ett DOM-element (). Med något valt väljer vi något med valet genom att påberopa jQuery-metoderna text(), attr (), och append till().

De text Metoden ringde på det inslagna element och ställ in elementets displaytext för att vara "jQuery." De attr anrop sätter href attribut till jQuery webbplatsen.

Grokking "hitta något, gör någonting" grundbegrepp är avgörande för att utvecklas som en jQuery-utvecklare.


Konceptet, bakom konceptet, bakom jQuery

Medan du väljer något och gör något är kärnkonceptet bakom jQuery, skulle jag vilja förlänga detta koncept för att inkludera att skapa något också. Därför kan konceptet bakom jQuery utvidgas till att inkludera först skapa något nytt, välja det och sedan göra något med det. Vi kunde kalla detta konceptet bakom konceptet bakom jQuery.

Vad jag försöker göra uppenbart är att du inte är fast vid att bara välja något som redan finns i DOM. Det är dessutom viktigt att fira att jQuery kan användas för att skapa nya DOM-element och sedan göra något med dessa element.

I kodexemplet nedan skapar vi en ny element som inte finns i DOM. När den väl skapats väljs den och manipuleras sedan.

       

Det viktigaste konceptet att hämta här är att vi skapar element på flugan och sedan fungera som om det redan fanns i DOM.


jQuery Kräver att HTML ska köras i standardläge eller nästan standardläge

Det finns kända problem med jQuery-metoder som inte fungerar korrekt när en webbläsare gör en HTML-sida i quirks-läge. Kontrollera när du använder jQuery att webbläsaren tolkar HTML i standardläge eller nästan standardläge genom att använda en giltig doktyp.

För att säkerställa korrekt funktionalitet använder kodexemplen i den här boken HTML 5-doktypen.

 

Väntar på DOM för att vara klar

jQuery avfyrar en anpassad händelse som heter redo när DOM är laddad och tillgänglig för manipulation. Kod som manipulerar DOM kan köras i en hanterare för den här händelsen. Detta är ett vanligt mönster som ses med jQuery-användningen.

Följande exempel innehåller tre kodade exempel på den här anpassade händelsen som används.

        

Tänk på att du kan bifoga så många redo() händelser till dokumentet som du vill. Du är inte begränsad till bara en. De exekveras i den ordning de tillkom.


Utför jQuery-kod När webbläsarfönstret är helt laddat

Vanligtvis vill vi inte vänta på window.onload händelse. Det är meningen med att använda en anpassad händelse som redo() som kommer att exekvera kod innan fönstret laddas, men efter att DOM är redo att traverseras och manipuleras.

Men ibland vill vi faktiskt vänta. Medan den anpassade redo() händelsen är utmärkt för att exekvera kod när DOM är tillgängligt, kan vi också använda jQuery för att utföra kod när hela webbsidan (inklusive alla tillgångar) är helt laddad.

Detta kan göras genom att fästa en händelsehanterare på fönster objekt. jQuery tillhandahåller ladda() händelse metod som kan användas för att aktivera en funktion när fönstret är helt laddat. Nedan ger jag ett exempel på ladda() händelse metod som används.

        

Inkludera alla CSS-filer innan du inkluderar jQuery

Med jQuery 1.3 garanterar biblioteket inte längre att alla CSS-filer laddas innan det brinner anpassningen redo() händelse. På grund av denna ändring i jQuery 1.3 bör du alltid inkludera alla CSS-filer före någon jQuery-kod. Detta kommer att se till att webbläsaren har analyserat CSS innan den flyttas till JavaScript inkluderat senare i HTML-dokumentet. Naturligtvis kan bilder som refereras via CSS eventuellt hämtas när webbläsaren analyserar JavaScript.


Använda en värdversion av jQuery

När du lägger in jQuery på en webbsida väljer de flesta att ladda ner källkoden och länka till den från en personlig domän / värd. Det finns dock andra alternativ som innebär att någon annan värd jQuery-koden för dig.

Google är värd flera versioner av jQuery-källkoden med avsikt att den används av någon. Detta är faktiskt väldigt användbart. I kodexemplet nedan använder jag a

Google är också värd för flera tidigare versioner av jQuery-källkoden, och för varje version tillhandahålls förminskade och icke-minskade varianter. Jag rekommenderar att du använder den icke-miniverade varianten under utveckling, eftersom felsökningsfel alltid är enklare när du hanterar icke-minifierad kod.

En fördel med att använda en Google-värdversion av jQuery är att den är pålitlig, snabb och eventuellt cachad.


Utför jQuery-kod när DOM analyseras utan att använda Klar ()

Kunden redo() händelsen är inte helt nödvändig. Om din JavaScript-kod inte påverkar DOM, kan du inkludera den någonstans i HTML-dokumentet. Detta innebär att du kan undvika redo() händelse helt och hållet om din JavaScript-kod inte är beroende av att DOM är intakt.

De flesta JavaScript nuförtiden, speciellt jQuery-kod, innebär att man manipulerar DOM. Det betyder att DOM måste analyseras helt av webbläsaren för att du ska kunna fungera på den. Faktum är att utvecklare har fastnat på window.onload berg och dalbana resa för ett par år nu.

För att undvika att använda redo() händelse för kod som fungerar på DOM, kan du helt enkelt placera din kod i ett HTML-dokument före stängningen element. Detta gör att DOM är helt laddat, helt enkelt för att webbläsaren ska analysera dokumentet från topp till botten. Om du placerar din JavaScript-kod i dokumentet efter att DOM-elementen har manipulerats behöver du inte använda redo() händelse.

I exemplet nedan har jag försvunnit användningen av redo() genom att helt enkelt placera mitt skript innan dokumentkroppen stängs. Detta är den teknik jag använder i hela denna bok och på de flesta webbplatser jag bygger.

    

Hej, jag är DOM! Skript borta!

Om jag skulle placera


Bryta kedjan med destruktiva metoder

Som tidigare nämnts behåller inte alla jQuery-metoder kedjan. Metoder som  text() kan vara kedjad när den används för att ställa in textnodet för ett element. dock, text() bryter faktiskt kedjan när den används för att få textnoden i ett element.

I exemplet nedan, text() används för att ställa in och sedan få texten som finns i

 element.

        

Få texten som finns i ett element med text() är ett utmärkt exempel på en trasig kedja eftersom metoden kommer att returnera en sträng som innehåller textnodet, men inte jQuery-omslagssatsen.

Det borde inte vara överraskande att om en jQuery-metod inte returnerar jQuery-omslagssatsen så är kedjan bruten. Denna metod anses vara destruktiv.


Använda Destructive jQuery Metoder och Exiting Destruction Använd End ()

jQuery-metoder som ändrar den ursprungliga jQuery-omslagssatsen som valts anses vara destruktiva. Anledningen är att de inte behåller det ursprungliga läget för omslagssatsen. Oroa dig inte; ingenting förstörs eller tas bort. Snarare är den tidigare omslagssatsen kopplad till en ny uppsättning.

Men kul med kedjan behöver inte sluta när den ursprungliga förpackade satsen ändras. Använda slutet() Metod kan du återställa alla destruktiva ändringar som gjorts i originalförpackningsuppsättningen. Undersök användningen av slutet() metod i följande exempel för att förstå hur man kör in och ut ur DOM-element.

     

Aspekter av jQuery-funktionen

Funktionen jQuery är mångfacetterad. Vi kan skicka det olika värden och strängbildningar som den sedan kan använda för att utföra unika funktioner. Här är flera användningar av jQuery-funktionen:

  • Välj element från DOM med CSS-uttryck och anpassade jQuery-uttryck, samt välj element med DOM-referenser: jQuery ('p> a') eller jQuery ( ': först') och jQuery (document.body)
  • Skapa HTML på flyg genom att skicka HTML-strängstrukturer eller DOM-metoder som skapar DOM-element: jQuery ('
    ')
    eller jQuery (document.createElement ( 'div'))
  • En genväg till redo() händelse genom att överföra en funktion till jQuery-funktionen: jQuery (funktion ($) / * Genväg för klar () * /)

Var och en av dessa användningsområden är detaljerad i kodexemplet nedan.

       

Grokking När sökordet här refererar till DOM-element

När du bifogar händelser till DOM-element som ingår i en omslagssats, ska sökordetdetta kan användas för att referera till det aktuella DOM-elementet som hänför sig till händelsen. Följande exempel innehåller jQuery-kod som bifogar ett anpassat mouseenter händelse till vardera element på sidan. Den inbyggda JavaScript mouseover händelse brinner när markören går in eller lämnar ett barnelement, medan jQuery s mouseenter gör inte.

    jQuery.com jQuery.com jQuery.com    

Inne i den anonyma funktionen som överförs till mouseenter () metod använder vi sökordet detta att referera till strömmen element. Varje gång musen berör "jQuery.com" -texten, kommer webbläsaren att varna vilket element som har blivit moused-over genom att identifiera dess id attributvärde.

I det föregående exemplet är det också möjligt att ta detta referens och skicka den till jQuery-funktionen så att DOM-elementet är invecklat med jQuery-funktionalitet.

Så istället för detta:

 // Öppna ID-attributet för DOM-elementet. alert (this.id);

Vi kunde ha gjort det här:

 // Vik DOM-elementet med ett jQuery-objekt, // och använd sedan attr () för att få tillgång till ID-värde. alert ($ (this) .attr (id));

Detta är möjligt eftersom jQuery-funktionen inte bara tar väljare uttryck, det kommer också att hänvisa till DOM-element. I koden, detta är en referens till ett DOM-element.

Anledningen till att du kanske vill pakka in jQuery-funktionalitet runt ett DOM-element borde vara uppenbart. Om du gör det ger du möjligheten att använda jQuery chaining, om du behöver det.

Iterating över en uppsättning av element som ingår i jQuery wrappersatsen är något som liknar det koncept vi just diskuterat. Genom att använda jQuery varje() metod kan vi iterera över varje DOM-element som finns i en omslagssats. Detta möjliggör åtkomst till varje DOM-element individuellt, via användningen av detta nyckelord.

Med utgångspunkt i markeringen i föregående exempel kan vi välja allt element på sidan och använd varje() metod att iterera över vardera element i omslagssatsen, åtkomst till dess id attribut. Här är ett exempel.

   jQuery.com jQuery.com jQuery.com    

Om du skulle ladda HTML-filen i en webbläsare skulle webbläsaren varna för id värdet av varje element på sidan. Eftersom det finns tre element på sidan får du tre iterationer via varje() metod och tre varningsfönster.


Extrahera element från en Wrapper Set, använder dem direkt utan jQuery

Bara för att du sätter ihop jQuery-funktionalitet runt ett HTML-element betyder inte att du förlorar åtkomst till själva DOM-elementet själv. Du kan alltid extrahera ett element från omslagssatsen och använda elementet via inbyggd JavaScript. Till exempel, i koden nedan ställer jag in attributets titelattribut element på HTML-sidan genom att manipulera egenskapen för den inbyggda titeln på DOM element.

    jQuery.com    

Som demonstrerat ger jQuery det praktiska skaffa sig() metod för åtkomst till DOM-element i ett specifikt index i omslagssatsen.

Men det finns ett annat alternativ här. Du kan undvika att använda skaffa sig() metoden genom att helt enkelt använda fältet för kvadratfästeuppsättning på själva jQuery-objektet. I samband med vårt tidigare kodexempel:

Denna kod:

 $ ('a'). get (0) .title = 'jQuery.com';

Kunde bli så här:

 $ ('a') [0] .title = 'jQuery.com';

Båda tillåter åtkomst till själva DOM-elementet. Personligen föredrar jag kvadratkonsolnotation. Det är snabbare eftersom det använder inbyggd JavaScript för att hämta elementet från en array, istället för att överföra det till en metod.

Men skaffa sig() Metoden ger en smidig lösning för att placera alla DOM-elementen i en naturlig uppsättning. Genom att helt enkelt ringa skaffa sig() metod utan att överföra en indexparameter, kommer metoden att returnera alla DOM-elementen i omslagssatsen i en inbyggd JavaScript-grupp.

Att demonstrera, låt oss ta skaffa sig() för en provkörning. I koden nedan placerar jag alla element i en array. Jag använder sedan arrayen för att komma åt titelegenskapen för den tredje DOM-objekt på sidan.

    jQuery.com jQuery.com jQuery.com    

Anmärkningar: Använder sig av skaffa sig() kommer att avsluta jQuery's chaining. Det kommer att ta omslagssatsen och ändra den till en enkel uppsättning DOM-element som inte längre är invecklade med jQuery-funktionalitet. Därför använder du .slutet() Metoden kan inte återställa kedjan efter .skaffa sig().


Kontrollera att se om ompaketet är tomt

Innan du börjar använda en omslagssats, är det logiskt att kontrollera att du faktiskt har valt något. Den enklaste lösningen är att använda en om uttalande för att kontrollera om omslagssatsen innehåller några DOM-element.

    jQuery    

Sanningens sanning är ovanstående om uttalanden är inte helt nödvändiga, eftersom jQuery kommer att misslyckas tyst om inga element hittas. Varje metod som är kedjad till en tom omslagsuppsättning åberopas emellertid fortfarande. Så medan vi faktiskt kunde avstå från användningen av om uttalanden, det är troligt en bra tumregel att använda dem. Att anropa metoder på en tom omslagsuppsättning kan eventuellt leda till onödig bearbetning, såväl som oönskat resultat om metoder returnerar andra värden än omslagssatsen och dessa värden ageras på.


Skapa ett alias genom att byta namn på jQuery-objektet själv

jQuery tillhandahåller noConflict () metod som har flera användningsområden, nämligen möjligheten att ersätta $ med ett annat alias. Detta kan vara till hjälp på tre sätt: Det kan avstå från användningen av $ logga till ett annat bibliotek, undvik eventuella konflikter och ge möjlighet att anpassa namnrymden / aliaset för jQuery-objektet.

Låt oss till exempel säga att du bygger en webbapplikation för företag XYZ. Det kan vara trevligt att anpassa jQuery så att istället för att behöva använda jQuery ( 'div'). visa () eller $ (Div). Show () du kan använda XYZ (div). Show () istället.

    
Syncfusion., Inc.

Anmärkningar:Genom att passera noConflict () funktion ett booleskt värde av true, du kan helt ångra vad jQuery har infört på webbsidan. Detta bör endast användas i extrema fall eftersom det sannolikt kommer att orsaka problem med jQuery-plugins.


Använda .each () När Implicit Iteration är inte tillräckligt

Förhoppningsvis är det uppenbart att om du har en HTML-sida (exempel nedan) med tre tomma

element, kommer följande jQuery-uttalande att markera alla tre elementen på sidan, iterera över de tre elementen (implicit iteration) och infoga texten "Jag är en div" i alla tre
element.

    

Detta anses vara implicit iteration eftersom jQuery-kod förutsätter att du vill manipulera alla tre elementen, vilket kräver iterering över de valda elementen och inställning av textnodvärdet för varje

med texten "Jag är en div." När det här görs som standard, kallas det implicit iteration.

Detta är ganska användbart. För det mesta gäller majoriteten av jQuery-metoderna implicit iteration. Andra metoder gäller emellertid endast för det första elementet i omslagssatsen. Till exempel jQuery-metoden attr () kommer endast åt det första elementet i omslagssatsen när det används för att få ett attributvärde.

Anmärkningar:När du använder attr () metod för att ange ett attribut, jQuery kommer faktiskt att tillämpa implicit iteration för att ställa in attributet och dess värde för alla element i omslagssatsen.

I koden nedan innehåller omslagssatsen alla

element på sidan, men attr () Metoden returnerar endast id värdet av det första elementet som ingår i omslagssatsen.

    
Jag är en div
Jag är en div
Jag är en div

För demonstrationens skull, anta att ditt mål är faktiskt att få id attributvärdet för varje element på sidan. Du kan skriva tre separata jQuery-satser som åtkomst till var och en

elementets id attributvärde. Om vi ​​skulle göra det kan det se ut så här:

 $ (# DIV1) attr (id). $ (# Div2) attr (id). $ (# DIV3) attr (id). // eller var $ divs = $ ('div'); // Cached query $ divs.eq (0) .attr ('id'); // Börja med 0 istället för 1 $ divs.eq (1) .attr ('id'); $ Divs.eq (2) .attr ( 'id');

Det verkar lite verbos, nej? Skulle det inte vara trevligt om vi kunde slinga runt omslagssatsen och helt enkelt extrahera id attributvärde från var och en av

element? Genom att använda $ (). Vardera () metod anropar vi en annan omgång av iteration när vår omslagsuppsättning kräver uttrycklig iteration för att hantera flera element.

I kodexemplet nedan använder jag $ (). Vardera () Metod att slinga över omslagssatsen, åtkomst till varje element i uppsättningen och extrahera sedan dess id attributvärde.

    
DIV1
div2
DIV3

Föreställ dig möjligheterna framför dig med förmågan att genomföra iteration när som helst du vill.

Anmärkningar: jQuery ger också en $ .each funktion, inte förväxlas med $ (). Varje metod som används specifikt för att iterera över en jQuery-omslagssats. De $ .each Metoden kan faktiskt användas för att iterera över något gammalt JavaScript-array eller -objekt. Det är i grunden en subsitute för inbyggda JavaScript-slingor.


Element i jQuery Wrapper Set Returneras i Dokument Order

Väljarmotorn kommer att returnera resultat i dokumentorder i motsats till den ordning i vilken selektorerna skickades in. Omslagssatsen kommer att fyllas med de valda elementen baserat på den ordning varje element visas i dokumentet, från topp till botten.

    

h1

h2

h3


Bestämning av kontext som används av jQuery-funktionen

Standardkontextet som används av jQuery-funktionen när du väljer DOM-element är dokumentelementet (t.ex.. $ ('a', dokument)). Detta innebär att om du inte tillhandahåller jQuery-funktionen (t.ex.. jQuery ()) med en andra parameter som ska användas som sammanhang för DOM-frågan används standardtexten som dokumentelementet, mer allmänt känt som .

Det är möjligt att bestämma det sammanhang där jQuery-funktionen utför en DOM-fråga med hjälp av sammanhang fast egendom. Nedan visar jag två kodade exempel på att hämta värdet på kontextegenskapen.

    
jQuery

Skapa hela DOM-strukturen, inklusive DOM-evenemang, i en enda kedja

Genom att utnyttja chaining och jQuery-metoder kan du skapa inte bara ett enda DOM-element utan hela DOM-strukturerna. Nedan skapar jag en orörd lista över jQuery-länkar som jag lägger till i DOM.

       

Konceptet som du behöver ta bort från det föregående exemplet är att jQuery kan användas för att skapa och driva komplexa DOM-strukturer. Med jQuery-metoderna ensam kan du piska upp de flesta DOM-strukturer som du kan behöva.