W pliku element.filters.js znajdziemy metody, które pozwolą nam na zwiększenie możliwości selekcji z danej kolekcji elementów (na przykład tej zwracanej za pomocą funkcji $$). Dzięki tym metodom możemy dokonać filtrowania zwracanych elementów według tagu, klasy, identyfikatora oraz atrybutu.
filterByTag
Metoda filterByTag pozwala wyselekcjonować nam z danej grupy elementów tylko te elementy, które są danego typu - na przykład linki, grafiki czy elementy listy. Gdybyśmy przykładowo chcieli wyselekcjonować z grupy wszystkich obrazków i linków danego dokumentu tylko linki to zapiszemy:
document.getElementsBySelector('a, img').filterByTag('a');
Jak widzimy składnia tej metody jest prosta:
kolekcja_elementów.filterByTag('typ_elementu');
filterByClass
Metoda filterByClass pozwala nam na wyselekcjonowanie z danej kolekcji elementów tych, które mają przypisaną daną klasę.
Składnia tej metody:
kolekcja_elementów.filterByClass('nazwa_klasy');
i przykład użycia - wyselekcjonowanie z danej grupy linków wszystkich elementów klasy 'link':
$$('.linki').filterByClass('link');
Ktoś się pewnie by powiedział, że te metody to to samo co poznane wcześniej metody z pliku element.selectors.js, ale różnica jest pomiędzy tymi metodami duża. Można powiedzieć, że poznane wcześniej metody służą do selekcji danej grupy elementów, a metody z pliku element.filters.js służą do filtrowania wyselekcjonowanej tymi metodami grupy elementów. Dlatego metod tych używamy w odniesieniu na przykład do grupy linków, a nie w odniesieniu do całego dokumentu by wyselekcjonować wszystkie linki...
filterById
Zasada działania tej metody jest podobna jak w wypadku dwóch poprzednich - z tą różnicą, że ta metoda zwróci tylko elementy posiadające dany identyfikator.
Składnia:
kolekcja_elementów.filterById('id_szukanych_elementow');
Na przykład wyselekcjonowanie linków posiadających id "ostatni" z grupy linków wygląda następująco:
$$('a').filterById('ostatni');
filterByAttribute
Metoda filterByAttribute to zdecydowanie najbardziej złożona metoda z wszystkich wymienionych - pozwala nam nie tylko wyszukiwać elementy posiadające dany atrybut, ale także za pomocą operatorów określić jaką zawartość powinien mieć ten atrybut.
Pełna składnia tej metody wygląda następująco:
kolekcja_elementów.filterByAttribute('atrybut','operator','wartość_atrybutu');
gdzie argument "wartość_atrybutu" jest uwzględniany tylko wtedy gdy podany jest argument "operator". Co do operatora to może on przyjąć jedną z 6 poniższych wartości :
- "=" - operator ten oznacza, że wyselekcjonowane zostaną tylko te elementy, które mają atrybut o dokładnie takiej wartości jak podana jako 3. argument metody.
- "!=" - operator ten oznacza, że wyselekcjonowane zostaną tylko te elementy, które mają atrybut różny od takiej wartości jak podana jako 3. argument metody.
- "^=" - ten operator służy do wyselekcjonowania elementów, których atrybut zaczyna się ciągiem znaków podanym jako 3. argument metody.
- "$=" - ten operator służy do wyselekcjonowania elementów, których atrybut kończy się ciągiem znaków podanym jako 3. argument metody.
- "*=" - użycie tego operatora oznacza selekcję tych elementów, które w atrybucie zawierają podany jako 3. argument metody ciąg znaków.
-
"~=" - użycie tego operatora oznacza selekcję tych elementów, które w atrybucie zawierają podany jako 3. argument metody ciąg znaków, ale pod warunkiem, że jest on oddzielnym słowem:
przy takich argumentach metody:
('name','~=','test')
w wypadku takiego elementu:
<element name="test"/>
lub
<element name="exam test"/>
zostanie on zaakceptowany, natomiast element:
<element name="examtest"/>
zostanie odrzucony.
Na koniec przykład podsumowujący powyższe metody:
PRZYKŁAD
W następnej części kursu zajmiemy się plikiem element.form.js, służącym do obsługi formularzy (przy okazji dodam, że jest to najmniejszy plik w grupie Element).