jQuery-läpikäynti - find() -menetelmä
Esimerkki
Etsi kaikki lukuissa olevat jälkeläisspan-elementit ja aseta niiden väri punaiseksi:
$("p").find("span").css('color','red');
Määritelmä ja käyttö
find() -menetelmä hankkii nykyisen elementtijoukon jokaisen elementin jälkeläiset valitsemalla valitsinlauseella, jQuery-objektilla tai elementillä.
Syntaksi
.find(selector)
Parametrit | Kuvaus |
---|---|
selector | Merkistöarvo, joka sisältää valitsinlauseen, jota käytetään nykyisen elementtijoukon sopivuuden tarkistamiseen. |
Yksityiskohtainen selitys
Jos annetaan jQuery-objekti, joka edustaa DOM-elementtien joukkoa, .find() -menetelmä mahdollistaa näiden elementtien jälkeläisten hakemisen DOM-puusta ja uuden jQuery-objektin rakentamisen vastaavista elementeistä. .find() on samanlainen kuin .children() -menetelmä, mutta jälkimmäinen kulkee vain DOM-puun yhdellä tasolla.
.find() -menetelmän ensimmäinen merkittävä ominaisuus on, että se hyväksyy valitsinlauseen, joka on samaa tyyppiä kuin $() -funktioon välitetty lauseke. Elementtejä suodellaan testaten, vastaavatko ne valitsinlauseesta.
Käsittele seuraavaa yksinkertaista sisäkkäistä luetteloa:
<ul class="level-1"> <li class="item-i">I</li> <li class="item-ii">II <ul class="level-2"> <li class="item-a">A</li> <li class="item-b">B <ul class="level-3"> <li class="item-1">1</li> <li class="item-2">2</li> <li class="item-3">3</li> </ul> </li> <li class="item-c">C</li> </ul> </li> <li class="item-iii">III</li> </ul>
Aloitetaan hausta luettelosta II alkaen:
$('li.item-ii').find('li').css('background-color', 'red');
Tämän tutkimuksen tuloksena projektit A, B, 1, 2, 3 ja C on asetettu punaiseksi taustaväriksi. Vaikka projekti II vastaa valitsinlauseeseen, sitä ei sisällytetä tuloksiin; ainoastaan jälkeläisiin tehdään yhteensopivuustarkistus.
Eri kuin muihin puun läpikäymismenetelmiin, valitsinlause on .find() -menetelmän välttämätön parametri. Jos halutaan hakea kaikki jälkeläiset, voidaan siirtää tähti-valitsin '*'.
Valitsin konteksti on .find() -menetelmän toteuttama; siksi $('li.item-ii').find('li') on sama kuin $('li', 'li.item-ii').
jQuery 1.6:ssa voidaan käyttää annettua jQuery-kokoelmaa tai elementtiä suodattamiseen. Edelleen yllä oleva sisäkkäinen luettelo, kirjoitetaan ensin näin:
var $allListElements = $('li');
Tämän jälkeen siirretään tämä jQuery-objekti find-metodiin:
$('li.item-ii').find( $allListElements );
Yllä oleva koodi palauttaa jQuery-kokoelman, joka sisältää luettelon II-lapsista.
Samalla tavalla voidaan myös siirtää elementtiä:
var item1 = $('li.item-1')[0]; $('li.item-ii').find( item1 ).css('background-color', 'red');
Tämän kutsun tuloksena projekti 1 on asetettu punaiseksi taustaväriksi.