Het is niet nodig om een feitelijk element te leveren in combinatie met een filter, zoals $ ( 'Div: verborgen')
. Het is mogelijk om het filter eenvoudigweg te passeren, overal waar een selectoruitdrukking wordt verwacht.
Een paar voorbeelden:
// Selecteert alle verborgen elementen $ (': hidden'); // Selecteert alle div-elementen en selecteert vervolgens alleen even elementen $ ('div'). Filter (': even');
De aangepaste jQuery-selectorfilters :verborgen
en :zichtbaar
houd geen rekening met de CSS-zichtbaarheidseigenschap zoals je zou verwachten. De manier waarop jQuery bepaalt of een element verborgen of zichtbaar is, is of het element ruimte in het document verbruikt. Om precies te zijn, een element is zichtbaar als zijn browser-gerapporteerd offsetWidth
of offsetHeight
is groter dan 0. Op die manier een element dat een CSS kan hebben tonen
waarde van blok
vervat in een element met een tonen
waarde van geen
zou nauwkeurig melden dat het niet zichtbaar is.
Bestudeer de code zorgvuldig en zorg ervoor dat u begrijpt waarom de teruggegeven waarde is Het is vaak nodig om te bepalen of de geselecteerde set elementen inderdaad een specifiek element bevat. De ... gebruiken Het moet duidelijk zijn dat de tweede Opmerkingen: Vanaf jQuery 1.3, de Filter wordt gebruikt door andere interne jQuery-functies. Daarom zijn hier ook alle regels van toepassing die hier van toepassing zijn. Sommige ontwikkelaars gebruiken U kunt de eerste parameter van de jQuery-functie verschillende uitdrukkingen geven, gescheiden door een komma: is de Elk van deze expressies selecteert DOM-elementen die allemaal aan de set wrapper zijn toegevoegd. We kunnen dan op deze elementen werken met behulp van jQuery-methoden. Houd er rekening mee dat alle geselecteerde elementen in dezelfde set worden geplaatst. Een inefficiënte manier om dit te doen, is de jQuery-functie drie keer op te roepen, eenmaal voor elke expressie. Het is mogelijk om te bepalen of je expressie iets heeft geselecteerd door na te gaan of de set wrapper een lengte heeft. U kunt dit doen met behulp van de array-eigenschap Opmerkingen: Als dit niet voor de hand ligt, kan de eigenschap length ook het aantal elementen in de set wrapper rapporteren - op een andere manier aangegeven, hoeveel elementen zijn geselecteerd door de expressie die is doorgegeven aan de functie jQuery. De mogelijkheden van de jQuery-selectorengine kunnen worden uitgebreid door uw eigen aangepaste filters te maken. In theorie, alles wat je hier doet is voortbouwen op de aangepaste selectors die al deel uitmaken van jQuery. Stel dat we bijvoorbeeld alle elementen op een webpagina willen selecteren die absoluut zijn gepositioneerd. Aangezien jQuery nog geen aangepaste versie heeft Het belangrijkste om hier te begrijpen is dat je niet beperkt bent tot de standaard selectors geleverd door jQuery. U kunt uw eigen maken. Voordat u echter de tijd besteedt aan het maken van uw eigen versie van een selector, kunt u het eenvoudigweg proberen Opmerkingen: Voor meer informatie over het maken van uw eigen selectors, raad ik aan het volgende te lezen: http://www.bennadel.com/blog/1457-How-To-Build-A-Custom-jQuery-Selector.htm jQuery biedt filters voor het filteren van een wrapper die is ingesteld op basis van de numerieke context van een element binnen de set. Deze filters zijn: Opmerkingen: Filters die de wrapper-set filteren, doen dit door elementen in de set te filteren op een startpunt van 0 of een index van 0. Bijvoorbeeld Gebruik makend van Als het niet voor de hand ligt, sta me toe het verder uit te leggen. De reden dat Met een duidelijk begrip van het manipuleren van de set zelf, kunnen we ons begrip van het selecteren van elementen vergroten door filters te gebruiken die elementen selecteren die unieke relaties hebben met andere elementen binnen de werkelijke DOM. jQuery biedt verschillende selectors om dit te doen. Sommige van deze selectors zijn op maat, terwijl sommige bekende CSS-uitdrukkingen zijn voor het selecteren van DOM-elementen. Het gebruik van deze selectorfilters selecteert elementen op basis van hun relatie binnen de DOM met betrekking tot andere elementen in de DOM. Laten we, om dit concept te demonstreren, eens naar een code kijken. Als je verrast bent door het feit dat Het concept om mee weg te nemen is dat niet alle filters gelijk worden gemaakt. Zorg ervoor dat u begrijpt welke filters zijn op basis van DOM-relaties, bijvoorbeeld. jQuery-selectors gebruiken een reeks metakarakters (bijv. Hier is de volledige lijst met tekens die moeten worden geëscaped wanneer deze worden gebruikt als een letterlijk deel van een naam. Het is mogelijk om selectorfilters te stapelen, bijvoorbeeld. Let in de code op hoe we twee filters hebben gestapeld om deze selectie te voltooien. Andere selectorfilters kunnen naast alleen kenmerkfilters worden gestapeld. Bijvoorbeeld: Het concept om mee te nemen is dat selectorfilters kunnen worden gestapeld en in combinatie kunnen worden gebruikt. Opmerkingen: Je kunt ook filters nesten en stapelen - bijvoorbeeld. Selectorfilters kunnen worden genest. Hierdoor kunt u filters op een zeer beknopte en krachtige manier gebruiken. Hieronder geef ik een voorbeeld van hoe u filters kunt nesten om complexe filtering uit te voeren. Het concept om mee te nemen is dat selectorfilters kunnen worden genest. Opmerkingen: Je kunt ook filters nesten en stapelen - bijvoorbeeld. De Wanneer de jQuery-attribuutfilters die worden gebruikt om elementen te selecteren niet robuust genoeg zijn, probeer dan reguliere expressies te gebruiken. James Padolsey heeft een mooie extensie geschreven voor de filterselectoren waarmee we aangepaste reguliere expressies voor filtering kunnen maken. Ik heb hier een codevoorbeeld gegeven, maar kijk ook eens naar het artikel op http://james.padolsey.com voor alle details. Directe kinderelementen kunnen alleen worden geselecteerd met behulp van de combiner tekst tekst Het is mogelijk om de combiner te gebruiken Eigenlijk, waar
ook al is het display: block
.
De methode Is () gebruiken om een Booleaanse waarde te retourneren
is ()
methode, kunnen we de huidige set vergelijken met een expressie / filter. De cheque zal terugkeren waar
als de set ten minste één element bevat dat is geselecteerd door de gegeven expressie / filter. Als het element niet aanwezig is, vals
waarde wordt geretourneerd. Bestudeer de volgende code:
alert ()
retourneert een waarde van false omdat onze wrapper-set geen a bevatte ID kaart
attribuutwaarde van i2
. De is ()
methode is best handig om te bepalen of de wrapset een specifiek element bevat. is ()
methode ondersteunt alle uitdrukkingen. Eerder complexe expressies zoals die met hiërarchieselectieprogramma's (zoals +
, ~
, en >
) altijd teruggekeerd waar
.is ('. class')
om te bepalen of een element een specifieke klasse heeft. Vergeet niet dat jQuery al een methode heeft om dit te doen met de naam hasClass ( 'klasse')
, die kan worden gebruikt op elementen die meer dan één klassenwaarde bevatten. Maar de waarheid wordt verteld, hasClass ()
is gewoon een handige verpakking voor de is ()
methode.
U kunt jQuery meer dan één selectoruitdrukking doorgeven
$ ('uitdrukking, uitdrukking, uitdrukking')
. Met andere woorden, u bent niet beperkt tot het selecteren van elementen met slechts één uitdrukking. In het onderstaande voorbeeld geef ik bijvoorbeeld de jQuery-functie drie uitdrukkingen door, gescheiden door een komma.
Wrapper-set .lengte controleren om selectie te bepalen
lengte
. Als het lengte
eigenschap retourneert geen 0, dan weet u dat ten minste één element overeenkomt met de expressie die u hebt doorgegeven aan de functie jQuery. In de onderstaande code controleren we bijvoorbeeld de pagina voor een element met een ID kaart
van "niet." Raad eens? Het is er niet!
Aangepaste filters maken voor het selecteren van elementen
: positionAbsolute
filter, we kunnen onze eigen maken.
filter()
methode met een specifieke filterfunctie. Ik had bijvoorbeeld kunnen voorkomen dat ik de : positionAbsolute
selector door simpelweg de filter()
methode. // Verwijderen
Verschillen tussen filteren op numerieke volgorde versus DOM-relaties
:eerste
:laatste
:zelfs
:vreemd
: Eq (index)
: Gt (index)
: Lt (index)
: Eq (0)
en :eerste
toegang tot het eerste element in de set - $ ( 'Div: eq (0)')
- die op een 0-index staat. Dit staat in contrast met de : N-kind
filter dat is geïndexeerd. Betekenis, bijvoorbeeld, : N-kind (1)
zal het eerste onderliggende element retourneren, maar proberen te gebruiken : N-kind (0)
zal niet werken. Gebruik makend van : N-kind (0)
zal altijd niets selecteren.:eerste
zal het eerste element in de set selecteren terwijl :laatste
selecteert het laatste element in de set. Onthoud dat ze de set filteren op basis van de relatie (numerieke hiërarchie beginnend bij 0) binnen de set, maar niet de relaties van de elementen in de context van de DOM. Gezien deze kennis, zou het duidelijk moeten zijn waarom de filters :eerste
, :laatste
, en : Eq (index)
zal altijd een enkel element retourneren.:eerste
kan alleen een enkel element retourneren, omdat er maar één element in een set kan zijn dat als eerste wordt beschouwd als er maar één set is. Dit zou redelijk logisch moeten zijn. Bekijk de onderstaande code om dit concept in actie te zien.
voorouder-afstammeling
ouder> kind
vorige + volgende
vorige broers en zussen
: N-kind (selector)
:eerstgeborene
:laatste kind
:enig kind
:leeg
: Heeft (selector)
:ouder
$ ( 'Li: n-kind (oneven)'). Tekst ()
retourneert de waarde 135135, je bent nog geen grokking-relatiefilters. De verklaring, $ ( 'Li: n-kind (oneven)')
zei verbaal zou zijn "alles vinden elementen op de webpagina die kinderen zijn en filter ze vervolgens op vreemde kinderen. "Wel, het is zo dat er twee structuren op de pagina zijn met een groep broers en zussen bestaande uit
s. Mijn punt is dit: de wrapper set bestaat uit elementen op basis van een filter die rekening houdt met de relatie van een element met andere elementen in de DOM. Deze relaties zijn te vinden op meerdere locaties.
:enig kind
-en welke filteren op de positie van de elementen - bijv. : Eq ()
-in de omwikkelde set.
Elementen op id selecteren wanneer de waarde metatekens bevat
# ~ [] =>
) die bij gebruik als een letterlijk deel van een naam (bijv. id = "# foo [bar]"
) moet worden ontsnapt. Het is mogelijk om te ontsnappen aan tekens door twee backslashes vóór het teken te plaatsen. Bekijk de onderstaande code om te zien hoe we met behulp van twee backslashes in de selectie-expressie een element met een id-attribuutwaarde van #foo [bar]
.
#
;
&
,
.
+
*
~
'
:
"
!
^
$
[
]
(
)
=
>
|
/
Selectorfilters stapelen
a [title = "jQuery"] [^ href = "http: //"]
. Het voor de hand liggende voorbeeld hiervan is het selecteren van een element met specifieke kenmerken met specifieke attribuutwaarden. De jQuery-code hieronder selecteert bijvoorbeeld alleen elementen in de HTML-pagina die:
href
kenmerk met een startwaarde van "http: //"titel
kenmerk met de waarde "jQuery" jQuery.com jQuery.com 1 jQuery.com
// Selecteer de laatste
. $ ( 'P') filter ( ': niet (: first): niet (: laatste)')
Selectiefilters nesten
. $ ( 'P') filter ( ': niet (: first): niet (: laatste)')
Grokking het: nth-child () filter
: N-kind ()
filter heeft veel toepassingen. Stel bijvoorbeeld dat u alleen elke derde wilt selecteren element vervat in a
element. Het is mogelijk met de : N-kind ()
filter. Bestudeer de volgende code om een beter begrip te krijgen van het gebruik van de : N-kind ()
filter.
Elementen selecteren door kenmerkwaarden te zoeken met behulp van reguliere expressies
Verschil tussen het selecteren van directe kinderen versus alle nakomelingen
>
of via de kinderen()
traversing-methode. Alle afstammelingen kunnen worden geselecteerd met behulp van de *
CSS-expressie. Zorg ervoor dat je het verschil tussen de twee duidelijk begrijpt. Het onderstaande voorbeeld demonstreert de verschillen.
Directe kindelementen selecteren wanneer een context al is ingesteld
>
zonder een context om directe onderliggende elementen te selecteren als er al een context is opgegeven. Bekijk de onderstaande code.
'> element'
kan worden gebruikt als een uitdrukking wanneer een context al is bepaald.