Przegląd jQuery - metoda find()
Przykład
Szukaj wszystkich potomków elementów span w sekcji p i ustaw ich kolor na czerwony:
$("p").find("span").css('color','red');
Definicja i użycie
Metoda find() uzyskuje potomków każdego elementu w bieżącej kolekcji elementów, filtrując za pomocą selektora, obiektu jQuery lub elementu.
Gramatyka
.find(selector)
Parametry | Opis |
---|---|
selector | Wartość ciągła, zawierająca wyrażenie selekcyjne dostarczane do dopasowania bieżącej kolekcji elementów. |
Szczegółowe wyjaśnienie
Jeśli mamy obiekt jQuery reprezentujący zestaw elementów DOM, metoda .find() pozwala nam przeszukać te elementy potomków w drzewie DOM i utworzyć nowy obiekt jQuery z dopasowującymi elementami. Metoda .find() jest podobna do metody .children(), różni się tylko tym, że ta ostatnia przechodzi tylko przez jedno poziome w drzewie DOM.
Pierwszą oczywistą cechą metody .find() jest to, że akceptuje wyrażenie selekcyjne tego samego typu, co przekazujemy do funkcji $(). Prześlą testowanie, czy elementy odpowiadają temu wyrażeniu, aby filtrować elementy.
Proszę pomyśleć o następującej prostej wewnętrznej liście:
<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>
Zacznemy od wyszukiwania elementów listy II:
$('li.item-ii').find('li').css('background-color', 'red');
Wynik tego badania to, że projekty A, B, 1, 2, 3 oraz C zostały ustawione na czerwone tło. Nawet jeśli projekt II pasuje do wyrażenia wyboru, nie zostanie on zawarty w wyniku; będzie to tylko dopasowanie potomków.
W przeciwieństwie do innych metod przechodzenia drzewa, wyrażenie wyboru jest obowiązkowym parametrem dla .find(). Jeśli chcemy uzyskać wszystkie potomki, można przekazać symbol wildcard '*'.
Kontekst wyboru jest realizowany przez metodę .find(); więc $('li.item-ii').find('li') jest równoważne z $('li', 'li.item-ii').
Dla jQuery 1.6 możemy również używać określonych zestawów jQuery lub elementów do filtrowania. Nadal w powyższej wewnętrznej liście, najpierw napisałbyśmy:
var $allListElements = $('li');
Następnie przekazujemy ten obiekt jQuery metodzie find:
$('li.item-ii').find( $allListElements );
Powyższy kod zwróci jQuery zestaw, który zawiera elementy listy II jako potomków.
Podobnie, można również przekazać element:
var item1 = $('li.item-1')[0]; $('li.item-ii').find( item1 ).css('background-color', 'red');
Wynik tego wywołania to projekt 1 ustawiony na czerwony tło.