jQuery Kort gezegd Core jQuery

Basisconcept achter jQuery

Hoewel sommige conceptuele variaties bestaan ​​(bijvoorbeeld functies zoals $ .ajax) in de jQuery API, is het centrale concept achter jQuery "iets vinden, iets doen". Selecteer meer specifiek DOM-element (en) uit een HTML-document en doe er vervolgens iets mee met behulp van jQuery-methoden. Dit is het concept met de grote lijnen.

Om dit concept naar huis te rijden, kunt u de onderstaande code bekijken.

          

Merk op dat we in dit HTML-document jQuery gebruiken om een ​​DOM-element te selecteren (). Met iets geselecteerd, doen we dan iets met de selectie door de jQuery-methoden aan te roepen tekst(), attr (), en appendTo ().

De tekst methode riep de ingepakt element en stel de weergavetekst van het element in als "jQuery." De attr oproep stelt de href attribuut aan de jQuery-website.

Grokking van het basisbegrip "iets vinden, iets doen" is van cruciaal belang om als jQuery-ontwikkelaar vooruit te komen.


Het concept, achter het concept, achter jQuery

Hoewel het selecteren van iets en het doen van iets het kernconcept achter jQuery is, zou ik dit concept willen uitbreiden om ook iets te creëren. Daarom zou het concept achter jQuery kunnen worden uitgebreid om eerst iets nieuws te maken, het te selecteren en er vervolgens iets mee te doen. We zouden dit concept achter het concept achter jQuery kunnen noemen.

Wat ik probeer duidelijk te maken, is dat je niet vastzit aan het selecteren van iets dat al in de DOM zit. Het is extra belangrijk om te laten groeten dat jQuery kan worden gebruikt om nieuwe DOM-elementen te maken en vervolgens iets met deze elementen te doen.

In het onderstaande codevoorbeeld maken we een nieuwe element dat niet in de DOM voorkomt. Eenmaal aangemaakt, wordt deze geselecteerd en vervolgens gemanipuleerd.

       

Het belangrijkste concept om hier op te pikken is dat we het creëren element on the fly en vervolgens erop te opereren alsof het al in de DOM zat.


jQuery vereist HTML om te worden uitgevoerd in de standaardenmodus of de bijna-standaardmodus

Er zijn bekende problemen met de jQuery-methoden die niet correct werken wanneer een browser een HTML-pagina in de eigenaardighedenmodus rendert. Zorg ervoor dat wanneer u jQuery gebruikt, de browser de HTML interpreteert in de standaardmodus of bijna-standaardmodus door een geldig doctype te gebruiken.

Voor de juiste functionaliteit gebruikt u codevoorbeelden in dit boek het HTML 5-doctype.

 

Wachten op de DOM om klaar te zijn

jQuery start een aangepast evenement met de naam klaar wanneer de DOM is geladen en beschikbaar is voor manipulatie. Code die de DOM manipuleert, kan worden uitgevoerd in een handler voor deze gebeurtenis. Dit is een algemeen patroon dat wordt gezien met het gebruik van jQuery.

In het volgende voorbeeld zijn drie gecodeerde voorbeelden van deze aangepaste gebeurtenis in gebruik.

        

Houd in gedachten dat je er zoveel kunt bijvoegen klaar() gebeurtenissen in het document zoals u zou willen. Je bent niet beperkt tot slechts één. Ze worden uitgevoerd in de volgorde waarin ze zijn toegevoegd.


JQuery-code uitvoeren wanneer het browservenster volledig is geladen

Meestal willen we niet wachten op de window.onload evenement. Dat is het punt van het gebruik van een aangepast evenement zoals klaar() die code zal uitvoeren voordat het venster wordt geladen, maar nadat de DOM klaar is om te worden doorlopen en gemanipuleerd.

Soms willen we eigenlijk wel wachten. Terwijl de gewoonte klaar() evenement is geweldig voor het uitvoeren van code zodra de DOM beschikbaar is, we kunnen jQuery ook gebruiken om code uit te voeren zodra de volledige webpagina (inclusief alle items) volledig is geladen.

Dit kan gedaan worden door een load event handler aan de venster voorwerp. jQuery biedt de laden() gebeurtenismethode die kan worden gebruikt om een ​​functie op te roepen als het venster volledig is geladen. Hieronder geef ik een voorbeeld van de laden() gebeurtenismethode in gebruik.

        

Neem alle CSS-bestanden op voordat u jQuery invoert

Vanaf jQuery 1.3, garandeert de bibliotheek niet langer dat alle CSS-bestanden worden geladen voordat deze de custom opstart klaar() evenement. Vanwege deze wijziging in jQuery 1.3 moet u altijd alle CSS-bestanden vóór een jQuery-code opnemen. Dit zorgt ervoor dat de browser de CSS heeft geparseerd voordat deze verder gaat met het JavaScript dat later in het HTML-document is opgenomen. Uiteraard kunnen afbeeldingen waarnaar wordt verwezen via CSS al dan niet worden gedownload als de browser het JavaScript parseert.


Een gehoste versie van jQuery gebruiken

Bij het insluiten van jQuery in een webpagina kiezen de meeste mensen ervoor om de broncode te downloaden en ernaar te linken vanuit een persoonlijk domein / host. Er zijn echter nog andere opties waarbij iemand anders de jQuery-code voor u host.

Google host verschillende versies van de jQuery-broncode met de bedoeling dat deze door iedereen wordt gebruikt. Dit is eigenlijk heel handig. In het onderstaande codevoorbeeld gebruik ik een

Google host ook verschillende eerdere versies van de jQuery-broncode en voor elke versie zijn verkleinde en niet-verkleinde varianten beschikbaar. Ik raad aan om de niet-verkleinde variant te gebruiken tijdens de ontwikkeling, omdat foutopsporingfouten altijd gemakkelijker zijn als je te maken hebt met niet-verkleinde code.

Een voordeel van het gebruik van een door Google gehoste versie van jQuery is dat deze betrouwbaar, snel en mogelijk in de cache is opgeslagen.


JQuery-code uitvoeren wanneer DOM wordt geparseerd zonder Ready () te gebruiken

De gewoonte klaar() evenement is niet helemaal nodig. Als uw JavaScript-code de DOM niet beïnvloedt, kunt u deze overal in het HTML-document opnemen. Dit betekent dat u de klaar() event helemaal als uw JavaScript-code niet afhankelijk is van het intact zijn van de DOM.

De meeste JavaScript-systemen, met name jQuery-code, zullen betrekking hebben op het manipuleren van de DOM. Dit betekent dat de DOM volledig moet worden geparseerd door de browser zodat u erop kunt werken. Dit is de reden waarom ontwikkelaars vastzaten aan de window.onload achtbaanrit voor een paar jaar nu.

Om het gebruik van de te vermijden klaar() gebeurtenis voor code die werkt op de DOM, kunt u eenvoudig uw code in een HTML-document plaatsen vóór de afsluiting element. Hierdoor zorgt u ervoor dat de DOM volledig is geladen, simpelweg omdat de browser het document van boven naar beneden parseert. Als u uw JavaScript-code in het document plaatst na de DOM-elementen die het manipuleert, hoeft u het niet te gebruiken klaar() evenement.

In het onderstaande voorbeeld heb ik het gebruik van klaar() door simpelweg mijn script te plaatsen voordat het document wordt gesloten. Dit is de techniek die ik gebruik in dit boek en op de meeste sites die ik bouw.

    

Hallo, ik ben de DOM! Script weg!

Als ik de


De keten doorbreken met destructieve methoden

Zoals eerder vermeld, behouden niet alle jQuery-methoden de keten. Methoden zoals  tekst() kan worden gekoppeld wanneer het wordt gebruikt om het tekstknooppunt van een element in te stellen. Echter, tekst() breekt eigenlijk de ketting wanneer deze wordt gebruikt om het tekstknooppunt binnen een element te krijgen.

In het onderstaande voorbeeld, tekst() wordt gebruikt voor het instellen en vervolgens ophalen van de tekst in de

 element.

        

De tekst binnen een element verkrijgen met behulp van tekst() is een goed voorbeeld van een gebroken ketting omdat de methode een tekenreeks met het tekstknooppunt retourneert, maar niet de jQuery-wrapperset.

Het is geen verrassing dat als een jQuery-methode de jQuery-wikkelset niet retourneert, de ketting daardoor wordt verbroken. Deze methode wordt als destructief beschouwd.


Destructieve jQuery-methoden gebruiken en vernietiging beëindigen met behulp van End ()

jQuery-methoden die de oorspronkelijke geselecteerde jQuery-wikkelset wijzigen, worden als destructief beschouwd. De reden is dat ze niet de oorspronkelijke staat van de set wrapper behouden. Maak je geen zorgen; niets is echt vernietigd of verwijderd. Integendeel, de vorige wrapper set is gekoppeld aan een nieuwe set.

Plezier met ketenen hoeft echter niet te stoppen wanneer de oorspronkelijk omwikkelde set is gewijzigd. De ... gebruiken einde() methode, kunt u een back-up maken van alle destructieve wijzigingen die in de oorspronkelijke wrapperset zijn aangebracht. Bestudeer het gebruik van de einde() methode in het volgende voorbeeld om te begrijpen hoe u DOM-elementen in- en uit moet werken.

     

Aspecten van de functie jQuery

De jQuery-functie heeft meerdere facetten. We kunnen verschillende waarden en stringformaties doorgeven die het vervolgens kan gebruiken om unieke functies uit te voeren. Hier zijn verschillende toepassingen van de functie jQuery:

  • Selecteer elementen uit de DOM met behulp van CSS-expressies en aangepaste jQuery-expressies, en selecteer elementen met DOM-verwijzingen: jQuery ('p> a') of jQuery ( ': first') en jQuery (document.body)
  • Maak on-the-fly HTML door HTML-tekenreeksstructuren of DOM-methoden door te voeren die DOM-elementen maken: jQuery ('
    ')
    of jQuery (document.createElement ( 'div'))
  • Een snelkoppeling voor de klaar() event door een functie door te geven aan de functie jQuery: jQuery (functie ($) / * snelkoppeling voor gereed () * /)

Elk van deze gebruiken wordt beschreven in het codevoorbeeld hieronder.

       

Grokking wanneer het trefwoord dit verwijst naar DOM-elementen

Bij het koppelen van gebeurtenissen aan DOM-elementen in een wrapper-set, het sleutelwoorddeze kan worden gebruikt om naar het huidige DOM-element te verwijzen dat de gebeurtenis oproept. Het volgende voorbeeld bevat jQuery-code die een aangepaste bijlage zal toevoegen MouseEnter evenement voor elk element op de pagina. Het native JavaScript mouseover event ontsteekt wanneer de cursor een onderliggende element invoert of verlaat, terwijl jQuery's MouseEnter doet niet.

    jQuery.com jQuery.com jQuery.com    

Binnen de anonieme functie die wordt doorgegeven aan de MouseEnter () methode gebruiken we het sleutelwoord deze om naar de huidige te verwijzen element. Telkens wanneer de muis de tekst "jQuery.com" aanraakt, waarschuwt de browser welk element is overgeheveld door de identificatie ervan ID kaart Attribuutwaarde.

In het vorige voorbeeld is het ook mogelijk om de deze verwijzing en geef deze door aan de jQuery-functie zodat het DOM-element is omsloten met de jQuery-functionaliteit.

Dus in plaats van dit:

 // Toegang tot het ID-kenmerk van het DOM-element. alert (this.id);

We hadden dit kunnen doen:

 // Wikkel het DOM-element in met een jQuery-object // en gebruik vervolgens attr () om de ID-waarde te openen. alert ($ (this) .attr ( 'id'));

Dit is mogelijk omdat de jQuery-functie niet alleen expressies van keuzemogelijkheden gebruikt, maar ook verwijzingen naar DOM-elementen. In de code, deze is een verwijzing naar een DOM-element.

De reden waarom u jQuery-functionaliteit rond een DOM-element wilt verpakken moet duidelijk zijn. Als u dit doet, kunt u jQuery-kettingwerk gebruiken, mocht u dit nodig hebben.

Het herhalen van een reeks elementen in de jQuery-wikkelset lijkt enigszins op het concept dat we zojuist hebben besproken. Door de jQuery te gebruiken elk() methode kunnen we elk DOM-element in een wrapper-set herhalen. Hiermee krijgt u toegang tot elk DOM-element afzonderlijk, via het gebruik van de deze trefwoord.

Voortbouwend op de markeringen in het vorige voorbeeld, kunnen we alles selecteren elementen op de pagina en gebruik de elk() methode om over elk te itereren element in de wrapper set, toegang tot zijn ID kaart attribuut. Hier is een voorbeeld.

   jQuery.com jQuery.com jQuery.com    

Als u de HTML in een browser zou laden, zou de browser een waarschuwing voor de ID kaart waarde van elk element op de pagina. Omdat er drie zijn elementen op de pagina, krijgt u drie iteraties via de elk() methode en drie waarschuwingsvensters.


Extraheren van elementen uit een omslagset, rechtstreeks gebruiken zonder jQuery

Alleen omdat u de jQuery-functionaliteit rond een HTML-element verpakt, betekent niet dat u de toegang tot het eigenlijke DOM-element zelf verliest. U kunt altijd een element uit de wrapset extraheren en op het element werken via native JavaScript. In de onderstaande code stel ik bijvoorbeeld het titelkenmerk van de element in de HTML-pagina door de eigenschap native title van de. te manipuleren DOM-element.

    jQuery.com    

Zoals aangetoond, biedt jQuery het handige krijgen() methode voor toegang tot DOM-elementen bij een specifieke index in de wrapset.

Maar er is een andere optie hier. U kunt het gebruik van de vermijden krijgen() methode door simpelweg de notatie van de vierkante haaks array te gebruiken op het jQuery-object zelf. In de context van ons vorige codevoorbeeld:

Deze code:

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

Kan dit worden:

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

Beide geven toegang tot het daadwerkelijke DOM-element. Persoonlijk geef ik de voorkeur aan de notatie met vierkante haakjes. Het is sneller omdat het native JavaScript gebruikt om het element uit een array op te halen, in plaats van het door te geven aan een methode.

echter, de krijgen() methode biedt een gladde oplossing voor het plaatsen van alle DOM-elementen in een native array. Door gewoon de krijgen() methode zonder een indexparameter door te geven, retourneert de methode alle DOM-elementen in de wrapper die is ingesteld in een native JavaScript-array.

Laten we nemen om te demonstreren krijgen() voor een proefrit. In de onderstaande code plaats ik alle elementen in een array. Ik gebruik vervolgens de array om toegang te krijgen tot de eigenschap title van de derde DOM-object op de pagina.

    jQuery.com jQuery.com jQuery.com    

Opmerkingen: Gebruik makend van krijgen() zal jQuery's ketenen beëindigen. De wrapper wordt ingesteld en verandert deze in een eenvoudige array van DOM-elementen die niet langer zijn omwikkeld met jQuery-functionaliteit. Daarom, met behulp van de .einde() methode kan het ketenen niet herstellen na .krijgen().


Controleren om te zien of de Wrapper Set leeg is

Voordat u met een wikkelset begint te werken, is het logisch om te controleren of u in feite iets hebt geselecteerd. De eenvoudigste oplossing is om een als statement om te controleren of de wrapset DOM-elementen bevat.

    jQuery    

De waarheid van de zaak is het bovenstaande als statements zijn niet helemaal noodzakelijk, omdat jQuery stil zal falen als er geen elementen worden gevonden. Elke methode die is gekoppeld aan een lege wrapperset, wordt echter nog steeds aangeroepen. Dus terwijl we eigenlijk het gebruik van de als uitspraken, is het waarschijnlijk een goede vuistregel om ze te gebruiken. Het aanroepen van methoden op een lege wrapper-set kan mogelijk onnodige verwerking tot gevolg hebben, evenals ongewenste resultaten als methoden andere waarden retourneren dan de set wrapper en deze waarden worden toegepast op.


Een alias maken door het jQuery-object zelf een nieuwe naam te geven

jQuery biedt de geen conflict() methode die verschillende toepassingen heeft, namelijk de mogelijkheid om te vervangen $ met een ander alias. Dit kan op drie manieren nuttig zijn: het kan het gebruik van de $ ondertekenen bij een andere bibliotheek, potentiële conflicten helpen voorkomen en de mogelijkheid bieden om de naamruimte / alias voor het jQuery-object aan te passen.

Laten we bijvoorbeeld stellen dat u een webtoepassing voor bedrijf XYZ aan het bouwen bent. Het is misschien leuk om jQuery aan te passen, zodat je dit niet hoeft te gebruiken jQuery ( 'div'). concert () of $ ( 'Div'). Concert () je zou kunnen gebruiken XYZ ( 'div'). Concert () in plaats daarvan.

    
Syncfusion., Inc.

Opmerkingen:Door het geen conflict() functioneer een Booleaanse waarde van waar, u kunt volledig ongedaan maken wat jQuery heeft geïntroduceerd in de webpagina. Dit zou alleen in extreme gevallen moeten worden gebruikt, omdat dit, meer dan waarschijnlijk, problemen met jQuery-plug-ins veroorzaakt.


Gebruik van .each () wanneer impliciete iteratie niet voldoende is

Hopelijk is het duidelijk dat als je een HTML-pagina hebt (voorbeeld hieronder) met drie leeg

elementen, de volgende jQuery-instructie selecteert alle drie de elementen op de pagina, itereert over de drie elementen (impliciete iteratie) en voegt de tekst "Ik ben een div" in alle drie in
elementen.

    

Dit wordt beschouwd als impliciete iteratie omdat jQuery-code aanneemt dat u alle drie de elementen wilt manipuleren, wat itereren over de geselecteerde elementen vereist en het instellen van de waarde van het tekstknooppunt van elk

met de tekst "Ik ben een div." Wanneer dit standaard wordt gedaan, wordt dit de impliciete iteratie genoemd.

Dit is best handig. Voor het grootste deel zal de meerderheid van de jQuery-methoden impliciete iteratie toepassen. Andere methoden zijn echter alleen van toepassing op het eerste element in de wrapset. Bijvoorbeeld de jQuery-methode attr () krijgt alleen toegang tot het eerste element in de wrapper set wanneer dit wordt gebruikt om een ​​attribuutwaarde te krijgen.

Opmerkingen:Bij gebruik van de attr () methode om een ​​attribuut in te stellen, zal jQuery feitelijk impliciete iteratie toepassen om het attribuut en de waarde ervan in te stellen op alle elementen in de omslagset.

In de onderstaande code bevat de set wrapper alles

elementen op de pagina, maar de attr () methode geeft alleen de ID kaart waarde van het eerste element in de wrapset.

    
Ik ben een div
Ik ben een div
Ik ben een div

Neem voor het belang van de demonstratie aan dat het je doel is om de ID kaart attribuutwaarde voor elk element op de pagina. U kunt drie afzonderlijke jQuery-instructies gebruiken om toegang te krijgen tot elk

element ID kaart Attribuutwaarde. Als we dat zouden doen, zou het er ongeveer zo uit kunnen zien:

 $ ( '# Div1') attr ( 'id.'); $ ( '# Div2') attr ( 'id.'); $ ( '# DIV3') attr ( 'id.'); // of var $ divs = $ ('div'); // Zoekopdracht in cache $ divs.eq (0) .attr ('id'); // Begin met 0 in plaats van 1 $ divs.eq (1) .attr ('id'); $ Divs.eq (2) .attr ( 'id');

Dat lijkt een beetje uitgebreid, niet? Zou het niet fijn zijn als we de set omslagen wikkelen en eenvoudig de ID kaart attribuutwaarde van elk van de

elementen? Door de $ (). Elk () methode, roepen we een andere iteratie-ronde op wanneer onze wrapper-set expliciete iteratie vereist om meerdere elementen te verwerken.

In het onderstaande codevoorbeeld gebruik ik de $ (). Elk () methode om de wrapper-set door te lussen, toegang te krijgen tot elk element in de set en het uit te pakken ID kaart Attribuutwaarde.

    
div1
div2
DIV3

Stel u de mogelijkheden voor die voor u liggen met de mogelijkheid om iteratie op elk gewenst moment af te dwingen.

Opmerkingen: jQuery biedt ook een $ .each functie, niet te verwarren met de $ (). Elk methode, die specifiek wordt gebruikt om een ​​jQuery-wikkelset te itereren. De $ .each methode kan eigenlijk worden gebruikt om een ​​oude JavaScript-array of -object te itereren. Het is in wezen een vervanging voor native JavaScript-loops.


Elementen in jQuery Wrapper Set geretourneerd in documentvolgorde

De selector-engine retourneert resultaten in documentvolgorde in tegenstelling tot de volgorde waarin de selectors zijn doorgegeven. De wrapperset wordt gevuld met de geselecteerde elementen op basis van de volgorde waarin elk element in het document wordt weergegeven, van boven naar beneden.

    

h1

h2

h3


Bepaling van context gebruikt door de jQuery-functie

De standaardcontext die door de jQuery-functie wordt gebruikt bij het selecteren van DOM-elementen, is het documentelement (bijv. $ ('a', document)). Dit betekent dat als u de jQuery-functie (bijv. jQuery ()) met een tweede parameter die moet worden gebruikt als de context voor de DOM-query, is de standaardcontext die wordt gebruikt het documentelement, beter bekend als .

Het is mogelijk om de context te bepalen waarin de functie jQuery een DOM-query uitvoert met behulp van de context eigendom. Hieronder laat ik twee gecodeerde voorbeelden zien van het ophalen van de waarde van de eigenschap context.

    
jQuery

Volledige DOM-structuur maken, inclusief DOM-gebeurtenissen, in een enkele keten

Door gebruik te maken van chaining- en jQuery-methoden, kunt u niet alleen één DOM-element maken, maar volledige DOM-structuren. Hieronder maak ik een ongeordende lijst met jQuery-koppelingen die ik vervolgens aan de DOM toevoeg.

       

Het concept dat u moet wegnemen uit het vorige voorbeeld is dat jQuery kan worden gebruikt om complexe DOM-structuren te maken en te bedienen. Alleen al met behulp van jQuery-meth