jQuery-selailu - filter()-metodi

Esimerkki

Muuta kaikki div-tyyppisten elementtien väri ja lisää reunaviiva luokalle "middle":

$("div").css("background", "#c8ebcc")
  .filter(".middle")
  .css("border-color", "red");

Kokeile itse

Määritelmä ja käyttö

.filter()-menetelmä supistaa vastaavan elementtijoukon valitsimen mukaisiin elementteihin.

syntaksi

.filter(selector)
parametrit kuvaus
selector Merkistöarvo, joka sisältää valitsimen ilmauksen, jota käytetään nykyisen elementtijoukon sopivuuden määrittämiseen.

Yksityiskohtainen selitys

Jos annetaan jQuery-objekti, joka edustaa DOM-elementtien joukkoa, .filter()-menetelmä luo uuden jQuery-objektin, joka koostuu vastaavista elementtien alajoukosta. Käytettävä valitsin testaa jokaista elementtiä; kaikki valitsimen mukaiset elementit sisältyvät tulokseen.

mieti seuraavaa yksinkertaista luetteloa sisältävää sivua:

<ul>
  <li>list item 1</li>
  <li>list item 2</li>
  <li>list item 3</li>
  <li>list item 4</li>
  <li>list item 5</li>
  <li>list item 6</li>
</ul>

voimme soveltaa tätä menetelmää tähän luetteloaskeleiden joukkoon:

$('li').filter(':even').css('background-color', 'red');

Kokeile itse

Tämän kutsun tuloksena asetetaan projektien 1, 3 ja 5 taustaväri punaiseksi, koska ne vastaavat valitsinta (muista, että :even ja :odd käyttävät 0-alustettua index).

Suodatusfunktio

Toinen menetelmän muoto on käyttää funktiota eikä valitsinta elementtien suodattamiseen. Jos funktio palauttaa true, elementti sisältyy suodatettuun joukkoon; muuten sitä jätetään pois.

katso seuraava hieman monimutkaisempi HTML-kappale:

<ul>
  <li><strong>list</strong> item 1 - yksi bold tag</li>
  <li><strong>list</strong> item <strong>2</strong>
   - kaksi <span>bold tags</span></li>
  <li>list item 3</li>
  <li>list item 4</li>
  <li>list item 5</li>
  <li>list item 6</li>
</ul>

voimme valita nämä luetteloaskeleet ja sitten suodattaa ne sisällön perusteella:

$('li').filter(function(index) {
  return $('strong', this).length == 1;
).css('background-color', 'red');