Det er ikke nødvendig å gi et faktisk element i forbindelse med et filter, for eksempel $ ( 'Div: skjult')
. Det er mulig å bare passere filteret alene, hvor som helst et valg uttrykk forventes.
Noen eksempler:
// Velger alle skjulte elementer $ (': hidden'); // Velger alle div-elementer, og velger deretter bare like elementer $ ('div'). Filter (': even');
Den egendefinerte jQuery selector filtre : skjult
og :synlig
ikke ta hensyn til CSS-synlighetsegenskapen som man kan forvente. Måten jQuery bestemmer om et element er skjult eller synlig, er hvis elementet bruker noe mellomrom i dokumentet. For å være nøyaktig, er et element synlig hvis nettleseren er rapportert offsetWidth
eller offsetHeight
er større enn 0. På den måten, et element som kan ha et CSS vise
verdien av blokkere
inneholdt i et element med a vise
verdien av ingen
vil nøye rapportere at det ikke er synlig.
Undersøk koden forsiktig og sørg for at du forstår hvorfor verdien returnert er Det er ofte nødvendig å avgjøre om det valgte settet av elementer faktisk inneholder et bestemt element. Bruker Det skal være tydelig at den andre Merknader: Som av jQuery 1.3, the Filter brukes av andre interne jQuery-funksjoner. Derfor gjelder alle regler som gjelder der, også her. Noen utviklere bruker Du kan gi jQuery-funksjonens første parameter flere uttrykk adskilt av et komma: er den Hvert av disse uttrykkene velger DOM-elementer som alle legges til wrapper-settet. Vi kan da operere på disse elementene ved hjelp av jQuery-metoder. Husk at alle de valgte elementene vil bli plassert i samme innpakningssett. En ineffektiv måte å gjøre dette på er å ringe jQuery-funksjonen tre ganger, en gang for hvert uttrykk. Det er mulig å avgjøre om uttrykket ditt har valgt noe ved å sjekke om innpakningssettet har en lengde. Du kan gjøre det ved å bruke arrayegenskapen Merknader: Hvis det ikke er klart, kan egenskapen lengde også rapportere antall elementer i innpakningssettet - angitt på en annen måte, hvor mange elementer ble valgt av uttrykket som ble sendt til jQuery-funksjonen. Mulighetene til jQuery-seleksjonsmotoren kan utvides ved å lage dine egne tilpassede filtre. I teorien er alt du gjør her bygger på de tilpassede seleksjonene som allerede er en del av jQuery. For eksempel, si at vi ønsker å velge alle elementene på en nettside som er helt posisjonert. Siden jQuery ikke allerede har en egendefinert Det viktigste å forstå her er at du ikke er begrenset til standardvelgerene som tilbys av jQuery. Du kan lage din egen. Men før du bruker tiden til å lage din egen versjon av en velger, kan du bare bare prøve Merknader: For ytterligere informasjon om å lage dine egne selektorer foreslår jeg følgende les: http://www.bennadel.com/blog/1457-How-To-Build-A-Custom-jQuery-Selector.htm jQuery gir filtre for filtrering av en wrapper sett av et elements numeriske kontekst innenfor settet. Disse filtrene er: Merknader: Filtre som filtrerer wrapper-settet selv gjør det ved å filtrere elementer i settet ved et utgangspunkt på 0 eller en indeks på 0. For eksempel Ved hjelp av Hvis det ikke er åpenbart, la meg forklare videre. Grunnen til at Med en klar forståelse av å manipulere settet selv, kan vi forstørre vår forståelse av valg av elementer ved å bruke filtre som velger elementer som har unike relasjoner med andre elementer i selve DOM. jQuery gir flere selgere til å gjøre dette. Noen av disse valgene er tilpassede, mens noen er velkjente CSS-uttrykk for å velge DOM-elementer. Bruk av disse selektorfiltre vil velge elementer basert på deres forhold innenfor DOM som gjelder andre elementer i DOM. For å demonstrere dette konseptet, la oss se på noen kode. Hvis du er overrasket over det faktum at Konseptet å ta bort er at ikke alle filtre er skapt like. Sørg for at du forstår hvilke som er filter basert på DOM-relasjoner-f.eks. jQuery selectors bruker et sett med meta-tegn (f.eks. Her er den komplette listen over tegn som må unngås når de brukes som en bokstavelig del av et navn. Det er mulig å stable selektorfiltre-f.eks. Legg merke til i koden hvordan vi har stablet to filtre for å utføre dette valget. Andre valgfiltre kan stables utover bare attributtfiltre. For eksempel: Konseptet å ta bort er at valgfiltre kan stables og brukes i kombinasjon. Merknader: Du kan også hekke og stable filtre - f.eks. Selektorfilter kan nestes. Dette gjør det mulig å bruke filtre på en veldig kort og kraftig måte. Nedenfor gir jeg et eksempel på hvordan du kan neste filtre for å utføre komplisert filtrering. Konseptet å ta bort er at selektorfilter kan nestes. Merknader: Du kan også hekke og stable filtre - f.eks. De Når jQuery-attributtfiltrene som brukes til å velge elementer, ikke er robuste, kan du prøve å bruke vanlige uttrykk. James Padolsey har skrevet en fin utvidelse til filtervelgerne som tillater oss å lage egendefinerte regulære uttrykk for filtrering. Jeg har gitt et kodeeksempel her, men sørg for at du også sjekker ut artikkelen på http://james.padolsey.com for alle detaljer. Direkte barnelementer kan bare velges ved å bruke kombinatoren tekst tekst Det er mulig å bruke kombinatoren I utgangspunktet, ekte
selv om display: block
.
Bruk Is () Metoden til å returnere en boolsk verdi
er()
Metode, vi kan sjekke gjeldende sett mot et uttrykk / filter. Sjekkingen kommer tilbake ekte
hvis settet inneholder minst ett element som er valgt av det gitte uttrykket / filteret. Hvis det ikke inneholder elementet, a falsk
verdien returneres. Undersøk følgende kode:
varsling()
vil returnere en verdi av falsk fordi vår wrapper sett ikke inneholdt en id
attributt verdi av i2
. De er()
Metoden er ganske nyttig for å avgjøre om wrapper-settet inneholder et bestemt element. er()
Metoden støtter alle uttrykk. Tidligere har komplekse uttrykk som de som inneholder hierarkivelektorer (for eksempel +
, ~
, og >
) returneres alltid ekte
.er ('. klasse)
for å avgjøre om et element har en bestemt klasse. Ikke glem at jQuery allerede har en metode for å gjøre dette kalt hasClass ( 'klasse')
, som kan brukes på elementer som inneholder mer enn én klasseverdi. Men sannheten blir fortalt, hasClass ()
er bare en praktisk wrapper for er()
metode.
Du kan passere jQuery mer enn en Selector Expression
$ ('uttrykk, uttrykk, uttrykk')
. Med andre ord, er du ikke begrenset til å velge elementer som bare bruker et enkelt uttrykk. For eksempel, i eksemplet nedenfor overfører jeg jQuery-funksjonen tre uttrykk adskilt av et komma.
Kontrollerer Wrapper Set. Lengde for å bestemme valg
lengde
. Hvis lengde
Egenskapen returnerer ikke 0, da vet du at minst ett element samsvarer med uttrykket du passerte til jQuery-funksjonen. For eksempel, i koden under sjekker vi siden for et element med en id
av "ikke her". Gjett hva? Det er ikke der!
Opprette egendefinerte filtre for å velge elementer
: positionAbsolute
filter, kan vi lage vår egen.
filter()
metode med en spesifisert filtreringsfunksjon. For eksempel kunne jeg ha unngått å skrive : positionAbsolute
velger ved å filtrere filter()
metode. // Fjerne
Forskjeller mellom filtrering ved numerisk rekkefølge mot DOM-forhold
:først
:siste
:til og med
:merkelig
: Eq (indeks)
: Gt (indeks)
: Lt (indeks)
: Eq (0)
og :først
få tilgang til det første elementet i settet - $ ( 'Div: eq (0)')
- som er på en 0-indeks. Dette er i kontrast til : N-te-barn
filter som er indeksert. Betydning, for eksempel, : N-te-barn (1)
vil returnere det første barnelementet, men prøver å bruke : N-te-barn (0)
vil ikke fungere. Ved hjelp av : N-te-barn (0)
vil alltid velge ingenting.:først
vil velge det første elementet i settet mens :siste
vil velge det siste elementet i settet. Husk at de filtrerer settet basert på forholdet (numerisk hierarki som starter ved 0) i settet, men ikke elementernes relasjoner i sammenheng med DOM. Gitt denne kunnskapen, bør det være åpenbart hvorfor filtrene :først
, :siste
, og : Eq (indeks)
vil alltid returnere et enkelt element.:først
kan bare returnere et enkelt element, fordi det bare kan være ett element i et sett som anses som først når det bare er ett sett. Dette burde være ganske logisk. Undersøk koden under for å se dette konseptet i aksjon.
forfedre etterkommer
foreldre> barn
prev + neste
forrige søsken
: N-te-barn (velger)
:første barn
:siste barn
:enebarn
:tømme
: Har (velgeren)
: foreldre
$ ( 'Li: n'te barn (ulike)'). Tekst ()
returnerer verdien 135135, du er ennå ikke grusende forholdsfiltre. Uttalelsen, $ ( 'Li: n'te barn (ulike)')
sa muntlig ville være "finne alt elementer på nettsiden som er barn, og deretter filtrere dem av odde barn. "Vel, det skjer bare slik at det er to strukturer på siden som har en gruppe søsken bestående av
s. Mitt poeng er dette: Innpakningssettet består av elementer basert på et filter som tar hensyn til elementets forhold til andre elementer i DOM. Disse relasjonene finnes på flere steder.
:enebarn
-og hvilke som filtrerer etter elementets posisjon-f.eks. : EQ ()
-i det innpakket settet.
Velge elementer etter ID Når verdien inneholder meta-tegn
# ~ [] =>
) at når den brukes som en bokstavelig del av et navn (f.eks. id = "# foo [bar]"
) burde bli rømt. Det er mulig å unnslippe tegn ved å plassere to tilbakeslag før tegnet. Undersøk koden under for å se hvordan bruk av to tilbakeslag i valguttrykket tillater oss å velge et element med en idattributtverdi av #foo [bar]
.
#
;
&
,
.
+
*
~
'
:
"
!
^
$
[
]
(
)
=
>
|
/
Stacking Selector Filters
et [title = "jQuery"] [href ^ = "http: //"]
. Det åpenbare eksempelet på dette er å velge et element som har spesifikke attributter med spesifikke attributtverdier. For eksempel vil jQuery-koden nedenfor bare velge elementer på HTML-siden som:
href
attributt med en startverdi av "http: //"tittel
attributt med en verdi av "jQuery" jQuery.com jQuery.com 1 jQuery.com
// Velg sist
( ': Ikke (: først): ikke (: siste)'). $ ( 'P') filter
Nesting Selector Filters
( ': Ikke (: først): ikke (: siste)'). $ ( 'P') filter
Grokking the: nth-child () Filter
: N-te-child ()
filteret har mange bruksområder. For eksempel, si at du bare vil velge hver tredje element som finnes i a
element. Det er mulig med : N-te-child ()
filter. Undersøk følgende kode for å få en bedre forståelse av hvordan du bruker : N-te-child ()
filter.
Velge elementer ved å søke på attributter med vanlig uttrykk
Forskjellen mellom å velge direkte barn vs alle etterkommere
>
eller ved hjelp av barn ()
traversing metode. Alle etterkommere kan velges ved å bruke *
CSS uttrykk. Pass på at du tydelig forstår forskjellen mellom de to. Eksempelet nedenfor viser forskjellene.
Velge direkte barnelementer når en sammenheng allerede er satt
>
uten kontekst for å velge direkte barnelementer når en sammenheng allerede er gitt. Undersøk koden nedenfor.
'> element'
kan brukes som et uttrykk når en kontekst allerede er bestemt.