Det är inte nödvändigt att tillhandahålla ett verkligt element i samband med ett filter, såsom $ (Div: dolda ")
. Det är möjligt att helt enkelt passera filtret ensam, var som helst ett väljarsuttryck förväntas.
Några exempel:
// Väljer alla dolda element $ (': hidden'); // Väljer alla div-element och väljer sedan bara jämna element $ ('div'). Filter (': even');
Den anpassade jQuery-väljaren filtrerar :dold
och :synlig
ta inte hänsyn till egenskapen CSS synlighet som man kan förvänta sig. Det sätt som jQuery bestämmer om ett element är gömt eller synligt är om elementet förbrukar något utrymme i dokumentet. För att vara exakt är ett element synligt om webbläsaren rapporteras offsetWidth
eller offsetHeight
är större än 0. På så sätt, ett element som kan ha en CSS visa
värdet av blockera
Innehållet i ett element med a visa
värdet av ingen
skulle noggrant rapportera att det inte är synligt.
Undersök koden noggrant och se till att du förstår varför det returnerade värdet är Det är ofta nödvändigt att bestämma om den valda uppsättningen av element faktiskt innehåller ett specifikt element. Använda Det ska vara uppenbart att den andra Anmärkningar: Som av jQuery 1.3, the Filter används av andra interna jQuery-funktioner. Därför gäller alla regler som gäller där också här. Vissa utvecklare använder Du kan ge jQuery-funktionens första parameter flera uttryck separerade av ett kommatecken: är Vart och ett av dessa uttryck väljer DOM-element som alla läggs till i omslagssatsen. Vi kan sedan använda dessa element med jQuery-metoder. Tänk på att alla valda element kommer att placeras i samma omslagsuppsättning. Ett ineffektivt sätt att göra detta skulle vara att ringa jQuery-funktionen tre gånger, en gång för varje uttryck. Det är möjligt att bestämma om ditt uttryck har valt något genom att kontrollera om omslagssatsen har en längd. Du kan göra det genom att använda arrayegenskapen Anmärkningar: Om det inte är uppenbart kan egenskapen längd också rapportera antalet element i omslagssatsen - på ett annat sätt, hur många element som valdes av uttrycket som skickades till jQuery-funktionen. Möjligheterna i jQuery-väljarmotorn kan förlängas genom att skapa egna anpassade filter. I teorin bygger allt du gör här bygger på de anpassade väljare som redan ingår i jQuery. Till exempel, säg att vi skulle vilja välja alla element på en webbsida som är helt placerade. Eftersom jQuery inte redan har en anpassning Det viktigaste att förstå här är att du inte är begränsad till standardväljare som tillhandahålls av jQuery. Du kan skapa din egen. Men innan du spenderar tiden som skapar din egen version av en väljare kan du bara bara prova Anmärkningar: För ytterligare information om att skapa egna selektörer föreslår jag följande läsning: http://www.bennadel.com/blog/1457-How-To-Build-A-Custom-jQuery-Selector.htm jQuery tillhandahåller filter för att filtrera en wrapper-uppsättning av ett elements numeriska sammanhang inom uppsättningen. Dessa filter är: Anmärkningar: Filter som filtrerar inpakningsuppsättningen själv gör det genom att filtrera element i uppsättningen vid en startpunkt på 0 eller index på 0. Till exempel Använder sig av Om det inte är uppenbart, låt mig förklara mer. Anledningen till att Med en tydlig förståelse för att manipulera själva uppsättningen kan vi förstärka vår förståelse för att välja element genom att använda filter som väljer element som har unika relationer med andra element inom själva DOM. jQuery ger flera selektörer att göra detta. Vissa av dessa väljare är anpassade, medan några är välkända CSS-uttryck för att välja DOM-element. Användning av dessa väljarkilter kommer att välja element baserat på deras förhållande inom DOM som gäller andra delar i DOM. För att visa detta koncept, låt oss titta på någon kod. Om du är förvånad över det faktum att Konceptet att ta bort är att inte alla filter skapas lika. Se till att du förstår vilka som är filter baserat på DOM-relationer, t.ex.. jQuery-selektorer använder en uppsättning metatyper (t.ex.. Här är den fullständiga listan med tecken som måste släppas när de används som en bokstavlig del av ett namn. Det är möjligt att stapla väljningsfilter-t ex. Observera i koden hur vi har staplat två filter för att uppnå detta val. Andra väljarkilter kan staplas utöver bara attributfiltren. Till exempel: Konceptet att ta bort är att selektorfiltren kan staplas och användas i kombination. Anmärkningar: Du kan också boa och stapla filter - t.ex.. Selektorfiltren kan nästas. Detta gör att du kan använda filter på ett mycket kortfattat och kraftfullt sätt. Nedan ger jag ett exempel på hur du kan nästa filter för att utföra komplex filtrering. Konceptet att ta bort är att selektorfiltren kan nästas. Anmärkningar: Du kan också boa och stapla filter - t.ex.. De När jQuery-attributfiltret som används för att välja element inte är tillräckligt robusta, försök använda vanliga uttryck. James Padolsey har skrivit en trevlig förlängning till filterväljare som tillåter oss att skapa anpassade reguljära uttryck för filtrering. Jag har gett ett kodexempel här, men se till att du även kolla in artikeln på http://james.padolsey.com för alla detaljer. Endast direkta barnelement kan väljas med hjälp av kombineraren text text Det går att använda kombinationen I grund och botten, Sann
även om display: block
.
Använda metoden (Is) för att returnera ett booleskt värde
är()
metod kan vi kontrollera den aktuella uppsättningen mot ett uttryck / filter. Checken kommer tillbaka Sann
om uppsättningen innehåller åtminstone ett element som väljs av det givna uttrycket / filtret. Om det inte innehåller elementet, a falsk
värdet returneras. Undersök följande kod:
varna()
kommer att returnera ett värde av falskt eftersom vår omslagsset inte innehöll en id
attributvärde för i2
. De är()
Metoden är ganska praktisk för att bestämma om omslagssatsen innehåller ett specifikt element. är()
Metoden stöder alla uttryck. Tidigare komplexa uttryck, såsom de som innehåller hierarkinselektorer (t.ex. +
, ~
, och >
) returneras alltid Sann
.är ('. klass)
för att bestämma om ett element har en specifik klass. Glöm inte att jQuery redan har en metod för att göra detta kallat hasClass ( 'klass')
, som kan användas på element som innehåller mer än ett klassvärde. Men sanningen ska höras, hasClass ()
är bara ett bekvämt inslag för är()
metod.
Du kan passera jQuery mer än en väljaruttryck
$ ('uttryck, uttryck, uttryck')
. Med andra ord är du inte begränsad till att välja element som bara använder ett enda uttryck. Till exempel, i exemplet nedan passerar jag jQuery-funktionen tre uttryck separerade av ett komma.
Kontrollera Wrapper Set. Length för att bestämma valet
längd
. Om längd
Egenskapen returnerar inte 0, då vet du att minst ett element matchar det uttryck du skickade till jQuery-funktionen. Till exempel, i koden nedan kontrollerar vi sidan för ett element med en id
av "inte här". Gissa vad? Det är inte där!
Skapa anpassade filter för att välja element
: positionAbsolute
filter, vi kan skapa vår egen.
filtrera()
metod med en specificerad filtreringsfunktion. Till exempel kunde jag ha undvikit att skriva : positionAbsolute
väljaren genom att helt enkelt filtrera filtrera()
metod. // Ta bort
Skillnader mellan filtrering med numerisk ordning vs DOM-relationer
:först
:sista
:även
:udda
: Ekv (index)
: Gt (index)
: Lt (index)
: Ekv (0)
och :först
få tillgång till det första elementet i uppsättningen - $ (Div: eq (0))
- vilket är på ett 0-index. Detta står i kontrast till : N: te-barn
filter som är indexerat. Betydelse, till exempel, : N: te-barn (1)
kommer att returnera det första barnelementet, men försöker använda : N: te-barn (0)
kommer inte att fungera. Använder sig av : N: te-barn (0)
kommer alltid att välja ingenting.:först
kommer att välja det första elementet i uppsättningen under :sista
kommer att välja det sista elementet i uppsättningen. Kom ihåg att de filtrerar uppsättningen baserat på förhållandet (numerisk hierarki som börjar vid 0) inom uppsättningen, men inte elementenes relationer i DOMs sammanhang. Med tanke på denna kunskap, bör det vara uppenbart varför filtren :först
, :sista
, och : Ekv (index)
kommer alltid att returnera ett enda element.:först
kan bara returnera ett enda element eftersom det bara kan vara ett element i en uppsättning som anses vara först när det bara finns en uppsättning. Detta borde vara ganska logiskt. Undersök koden nedan för att se detta begrepp i aktion.
förfader ättling
förälder> barn
prev + nästa
före detta syskon
: N: te-barn (väljare)
:förstfödde
:sista barnet
:enda barnet
:tömma
: Har (väljare)
:förälder
$ (Li: n: te-barn (udda)). Text ()
returnerar värdet 135135, du är ännu inte grusande relationfilter. Påståendet, $ (Li: n: te-barn (udda))
sade muntligt skulle vara "hitta allt element på webbsidan som är barn, och sedan filtrera dem av udda barn. "Jo, det händer bara att det finns två strukturer på sidan som har en grupp syskon som består av
s. Min punkt är detta: Omslagssatsen består av element baserat på ett filter som tar hänsyn till ett elements förhållande till andra delar i DOM. Dessa relationer finns på flera platser.
:enda barnet
-och vilka som filtrerar genom elementenes position-t.ex.. : Ekv ()
-i den förpackade uppsättningen.
Val av element efter id När värdet innehåller meta-tecken
# ~ [] =>
) som när den används som en bokstavlig del av ett namn (t.ex.. id = "# foo [bar]"
) ska undvikas. Det är möjligt att flytta tecken genom att placera två backslashes före tecknet. Undersök koden nedan för att se hur du använder två backslashes i urvalet uttryck gör att vi kan välja ett element med ett id attributvärde av #Foo bar]
.
#
;
&
,
.
+
*
~
'
:
"
!
^
$
[
]
(
)
=
>
|
/
Stacking Selector Filters
en [title = "jQuery"] [href ^ = "http: //"]
. Det uppenbara exemplet på detta är att välja ett element som har specifika attribut med specifika attributvärden. Till exempel väljer jQuery-koden nedan bara element på HTML-sidan som:
href
attribut med ett startvärde för "http: //"titel
attribut med ett värde av "jQuery" jQuery.com jQuery.com 1 jQuery.com
// Välj den sista
. $ ( 'P') filter ( ': inte (: först): inte (: förra))
Nesting Selector Filters
. $ ( 'P') filter ( ': inte (: först): inte (: förra))
Grokking the: nth-child () Filter
: N: te-barn ()
filtret har många användningsområden. Till exempel, säg att du bara vill välja var tredje element som ingår i a
element. Det är möjligt med : N: te-barn ()
filtrera. Undersök följande kod för att få en bättre förståelse för hur man använder : N: te-barn ()
filtrera.
Val av element genom att söka attributvärden med regelbundna uttryck
Skillnad mellan att välja direkta barn vs. alla efterkommande
>
eller genom barn()
traversing metod. Alla efterkommande kan väljas med hjälp av *
CSS uttryck. Se till att du tydligt förstår skillnaden mellan de två. Exemplet nedan visar skillnaderna.
Välja direkta barnelement när en kontext redan är inställd
>
utan ett sammanhang att välja direkta barnelement när ett sammanhang redan har tillhandahållits. Undersök koden nedan.
'> element'
kan användas som ett uttryck när ett sammanhang redan har bestämts.