Nu este necesar să se furnizeze un element real împreună cu un filtru, cum ar fi $ ( 'Div: ascunse')
. Este posibil să treci pur și simplu filtrul singur oriunde este de așteptat o expresie selector.
Cateva exemple:
// Selectează toate elementele ascunse $ (': hidden'); // Selectează toate elementele div, apoi selectează doar elemente egale $ ('div'). Filter (': even');
Filtrele selectate jQuery selector :ascuns
și :vizibil
nu țineți cont de proprietatea de vizibilitate CSS așa cum s-ar putea aștepta. Modul în care jQuery determină dacă un element este ascuns sau vizibil este dacă elementul consumă orice spațiu în document. Pentru a fi exact, un element este vizibil în cazul în care browser-ul raportat offsetWidth
sau offsetHeight
este mai mare decât 0. În acest fel, un element care ar putea avea un CSS afişa
valoarea bloc
conținută într-un element cu a afişa
valoarea nici unul
ar raporta cu exactitate că nu este vizibilă.
Examinați codul cu atenție și asigurați-vă că înțelegeți de ce este returnată valoarea Este adesea necesar să se determine dacă setul de elemente selectat conține, de fapt, un element specific. Utilizarea Ar trebui să fie evident că al doilea Note: Începând cu jQuery 1.3, Filtrul este utilizat de alte funcții jQuery interne. Prin urmare, toate regulile care se aplică acolo se aplică și aici. Unii dezvoltatori folosesc Puteți furniza primul parametru al funcției jQuery câteva expresii separate printr-o virgulă: este Fiecare dintre aceste expresii selectează elementele DOM care sunt toate adăugate în setul de învelitori. Apoi putem opera pe aceste elemente folosind metode jQuery. Rețineți că toate elementele selectate vor fi plasate în același set de învelitori. Un mod ineficient de a face acest lucru ar fi numirea funcției jQuery de trei ori, o dată pentru fiecare expresie. Este posibil să determinați dacă expresia dvs. a selectat ceva verificând dacă setul de învelitori are o lungime. Puteți face acest lucru utilizând proprietatea matrice Note: Dacă nu este evident, proprietatea lungime poate de asemenea să raporteze numărul de elemente din setul de învelitori - altfel spus, câte elemente au fost selectate de expresia trecută la funcția jQuery. Capacitățile motorului selector jQuery pot fi extinse prin crearea propriilor filtre personalizate. În teorie, tot ceea ce faceți aici se bazează pe selectorii personalizați care fac deja parte din jQuery. De exemplu, spunem că dorim să selectăm toate elementele de pe o pagină Web care sunt absolut poziționate. Deoarece jQuery nu are deja personalizat Cel mai important lucru pentru a înțelege aici este faptul că nu vă limitați la selectorii impliciți furnizați de jQuery. Puteți crea propriul dvs. Cu toate acestea, înainte de a vă petrece timpul creând propria versiune a unui selector, puteți încerca pur și simplu Note: Pentru informații suplimentare despre crearea propriilor selectori, vă recomandăm următoarele: http://www.bennadel.com/blog/1457-How-To-Build-A-Custom-jQuery-Selector.htm jQuery oferă filtre pentru filtrarea unui set de wrapper de către contextul numeric al unui element din cadrul setului. Aceste filtre sunt: Note: Filtrele care filtrează setul de wrapper fac acest lucru prin filtrarea elementelor din set la un punct de pornire de 0 sau index de 0. De exemplu Utilizarea Dacă nu este evident, permiteți-mi să explic mai departe. Motivul pentru care Cu o înțelegere clară a manipulării setului în sine, putem crește înțelegerea noastră cu privire la selectarea elementelor utilizând filtrele care selectează elemente care au relații unice cu alte elemente din DOM real. jQuery oferă mai mulți selectori pentru a face acest lucru. Unele dintre aceste selectori sunt personalizate, în timp ce unele sunt expresii CSS bine cunoscute pentru selectarea elementelor DOM. Folosirea acestor filtre de selecție va selecta elemente bazate pe relația lor în cadrul DOM-ului în ceea ce privește alte elemente din DOM. Pentru a demonstra acest concept, să ne uităm la un cod. Dacă sunteți surprins de faptul că Conceptul de luat este că nu toate filtrele sunt create în mod egal. Asigurați-vă că înțelegeți ce filtre se bazează pe relațiile DOM-de ex. Selectorii jQuery utilizează un set de meta-caractere (de ex. Aici este lista completa a caracterelor care trebuie scapate atunci cand sunt folosite ca o parte literala a unui nume. Este posibilă stivuirea filtrelor de selecție - de ex. Observați în cod modul în care am stivuit două filtre pentru a realiza această selecție. Alte filtre selector pot fi stivuite pe lângă filtrele de atribute. De exemplu: Conceptul de luat este că filtrele de selecție pot fi stivuite și utilizate în combinație. Note: Puteți, de asemenea, să cuibărești și să stivezi filtre - de ex. Filtrele de selecție pot fi imbricate. Acest lucru vă permite să folosiți filtre într-un mod foarte concis și puternic. Mai jos, vă dau un exemplu despre cum puteți asambla filtrele pentru a efectua filtrarea complexă. Conceptul de luat este că filtrele de selecție pot fi imbricate. Note: Puteți, de asemenea, să cuibărești și să stivezi filtre - de ex. Când filtrele atributului jQuery utilizate pentru selectarea elementelor nu sunt suficient de robuste, încercați să utilizați expresii regulate. James Padolsey a scris o extensie plăcută selectorilor de filtre care ne vor permite să creăm expresii regulate personalizate pentru filtrare. Am oferit un exemplu de cod aici, dar asigurați-vă că verificați și articolul de pe http://james.padolsey.com pentru toate detaliile. Elementele directe ale copiilor pot fi selectate numai folosind combinatorul text text Este posibil să utilizați combinatorul Pe scurt, Adevărat
chiar dacă display: block
.
Utilizarea metodei Is () pentru a returna o valoare booleană
este()
, putem verifica setul curent față de o expresie / filtru. Verificarea va reveni Adevărat
dacă setul conține cel puțin un element care este selectat de expresia / filtrul dat. Dacă nu conține elementul, a fals
valoarea este returnată. Examinați următorul cod:
alerta()
va întoarce o valoare de false pentru că setul de învelitoare nu conținea a id
valoarea atributului I2
. este()
metoda este destul de utilă pentru a determina dacă setul de învelitori conține un element specific. este()
metoda suporta toate expresiile. Anterior, expresii complexe, cum ar fi cele care conțin selectori de ierarhie (cum ar fi +
, ~
, și >
) întotdeauna a revenit Adevărat
.este (“. clasa)
pentru a determina dacă un element are o anumită clasă. Nu uitați că jQuery are deja o metodă de a face acest lucru numit hasClass ( 'clasa')
, care pot fi utilizate pe elemente care conțin mai mult de o valoare de clasă. Dar adevărul trebuie spus, hasClass ()
este doar un ambalaj convenabil pentru este()
metodă.
Puteți trece jQuery mai mult decât o expresie selector
$ ('expresie, expresie, expresie')
. Cu alte cuvinte, nu vă limitați la selectarea elementelor utilizând doar o singură expresie. De exemplu, în exemplul de mai jos, trec funcția jQuery cu trei expresii separate printr-o virgulă.
Verificarea setării pachetului pentru a determina selecția
lungime
. În cazul în care lungime
proprietatea nu întoarce 0, atunci știi că cel puțin un element se potrivește cu expresia pe care ai trecut-o la funcția jQuery. De exemplu, în codul de mai jos verificăm pagina pentru un element cu un id
de "nu". Ghici ce? Nu este acolo!
Crearea de filtre personalizate pentru selectarea elementelor
: positionAbsolute
filtru, putem crea propriul nostru.
filtru()
cu o funcție de filtrare specificată. De exemplu, aș fi putut evita să scriu : positionAbsolute
selectând simplu filtrarea filtru()
metodă. // Elimina
Diferențele dintre filtrarea prin ordine numerică vs. relații DOM
:primul
:ultimul
:chiar
:ciudat
: Eq (index)
: Gt (index)
: Lt (index)
: Eq (0)
și :primul
accesați primul element din set - $ ( 'Div: eq (0)')
- care este la un index 0. Acest lucru este în contrast cu : Nth-copil
filtru care este unul indexat. Înseamnă, de exemplu, : Nth-copil (1)
va întoarce primul element copil, dar încearcă să îl folosească : Nth-copil (0)
nu va funcționa. Utilizarea : Nth-copil (0)
va selecta întotdeauna nimic.:primul
va selecta primul element din set în timp ce :ultimul
va selecta ultimul element din set. Amintiți-vă că filtrează setul pe baza relației (ierarhia numerică pornind de la 0) în set, dar nu și a relațiilor elementelor în contextul DOM. Având în vedere aceste cunoștințe, ar trebui să fie evident de ce filtrele :primul
, :ultimul
, și : Eq (index)
va întoarce întotdeauna un singur element.:primul
se poate întoarce doar un singur element deoarece este posibil să existe un singur element dintr-un set care este considerat primul atunci când există doar un singur set. Acest lucru ar trebui să fie destul de logic. Examinați codul de mai jos pentru a vedea acest concept în acțiune.
descendent al strămoșilor
mamă> copil
prev + următoarea
previziuni
: Nth-child (Selector)
:primul copil
:ultimul copil
:singurul copil
:gol
: Are (selector)
:mamă
$ ( 'Li: nth-copil (nui adevărat)'). Text ()
returnează valoarea 135135, nu sunteți încă filtre de relații grokking. Declaratia, $ ( 'Li: nth-copil (nui adevărat)')
spus verbal ar fi "a găsi toate elementele din pagina web care sunt copii și apoi să le filtreze de copii ciudați. "Ei bine, se întâmplă doar că în pagină există două structuri care au o grupare de frați alcătuită din
s. Ideea mea este următoarea: setul de învelitori este alcătuit din elemente bazate pe un filtru care ia în considerare relația unui element cu alte elemente din DOM. Aceste relații pot fi găsite în mai multe locații.
:singurul copil
-și care sunt filtrate după poziția elementelor - de ex. : Eq ()
-în setul înfășurat.
Selectarea elementelor după Id când valoarea conține meta-caractere
# ~ [] =>
) că atunci când este folosit ca o parte literală a unui nume (de ex. id = "# foo [bar]"
) ar trebui să fie scape. Este posibil să scăpați de caractere prin plasarea a două spate în fața caracterului. Examinați codul de mai jos pentru a vedea cum folosirea a două backslash-uri în expresia de selecție ne permite să selectăm un element cu o valoare a atributului id #foo [bar]
.
#
;
&
,
.
+
*
~
'
:
"
!
^
$
[
]
(
)
=
>
|
/
Stabilirea filtrelor de selecție
un [title = "jQuery"] [href ^ = "http: //"]
. Exemplul evident al acestui lucru este selectarea unui element care are atribute specifice cu valori specifice ale atributelor. De exemplu, codul jQuery de mai jos va selecta numai elemente din pagina HTML care:
href
atribut cu o valoare de pornire a "http: //"titlu
atribut cu o valoare de "jQuery" jQuery.com jQuery.com 1 jQuery.com
// Selectați ultima
. $ ( 'P') filtru ( ': nu (: în primul rând): nu (: ultima)')
Nesting Selector Filters
. $ ( 'P') filtru ( ': nu (: în primul rând): nu (: ultima)')
Grokking filtrul nth-child ()
: Nth-copil ()
filtrul are multe utilizări. De exemplu, spuneți că doriți doar să selectați fiecare treime element cuprins într - un
element. Este posibil cu : Nth-copil ()
filtru. Examinați următorul cod pentru a înțelege mai bine cum să utilizați : Nth-copil ()
filtru.
Selectarea elementelor prin căutarea valorilor atributelor utilizând expresii regulate
Diferența dintre selectarea copiilor direcți împotriva tuturor descendenților
>
sau prin intermediul (copii)
traversing metoda. Toți descendenții pot fi selectați utilizând *
Expresie CSS. Asigurați-vă că înțelegeți în mod clar diferența dintre cele două. Exemplul de mai jos demonstrează diferențele.
Selectarea elementelor directe ale copilului când un context este deja setat
>
fără un context pentru selectarea elementelor copilului direct atunci când a fost deja furnizat un context. Examinați codul de mai jos.
'> element "
poate fi folosit ca expresie atunci când un context a fost deja determinat.