Selektoren und Filter
Selektoren beschreiben die Auswahl eines oder mehrere Elemente im DOM-Baum einer Webseite. Für die weitere Darstellung nutzen wir CSS-Eigenschaften zum Hervorheben der selektierten Elemente. Die Funktionalität ist aber nicht darauf beschränkt.Einfache Selektoren
-
a
--- Alle Elemente vom angegebenen Type, hier alle Links<a>
-
#myid
--- Das Element mit der IDmyid
. Normalerweise sind IDs im Dokument eindeutig sodass genau ein Element zurückgegeben wird, aber fehlerhafte Dokumente und fehlertolerante Browser können auch ein Array aus mehreren Elementen liefern. -
.myclass
--- Alle Elemente der Klassemyclass
-
.classA .classB
--- Alle Elemente, welchen die KlassenclassA
undclassB
zugewiesen sind -
*
--- Alle Elemente des Dokuments -
Selektor1, Selektor2, ...
Alle Elemente auf welche mindestens ein aufgezählter Selektor passt
Hierarchische Selektoren
Über hierarchische Selektoren lassen sich Elemente, welche in Beziehung mit anderen Elementen stehen adressieren.-
ElementA ElementB
--- Alle B-Elemente, welche innerhalb von ElementA eingebettet sind -
Eltern > Kind
--- Alle direkten Kind-Elemente des Eltern-Elements -
ElementA + ElementB
--- Alle B-Element, welche direkt auf ein A-Element folgen -
ElementA ~ ElementB
--- Alle B-Element, welche Geschwister von ElementA sind
jQuery-Selektor | Beschreibung |
---|---|
$("*") |
Alle Elemente des Dokuments |
$("a") |
Alle Links <a> |
$("#myid") |
Das Element mit der ID myid , <div id="myid">Hier steht Inhalt ...</div> |
$(".myclass") |
Alle Elemente der Klasse myclass , Bsp: <span class="myclass">Hier steht Inhalt ...</span> |
$("th,td") |
Die Elemente <th> und <td> |
$("p a") |
Alle Links <a> innerhalb eines Absatz <p> |
$("p.myclass") |
Alle Absätze der Klasse myclass , <p class="myclass">Der Absatz ...</p> |
$("div > img") |
Alle Bilder, welche direkte Kinder von <div>-Elementen sind |
$("label+input") |
Alle <input> -Elemente., welche nach einem <label> -Element folgen |
$("td~td") |
Alle <td> -Elemente, welche ein <td> -Element als Vorgänger habe |
Methoden
Das jQuery-Objekt stellt für die Behandlung der Elementauswahl Methoden bereit.size()
Liefert die Anzahl der Elemente, welche durch die Auswahl beschrieben sind.
<script type="text/javascript" src="jquery-1.4.min.js"></script> <script type="text/javascript"> // we will add our javascript code here $(document).ready(function() { $("#output").html("Das Dokument enthält: " + $("a").size() + " Links."); }); </script> ... html code mit Links .. <div id="output"></div>
get()
Liefert ein indiziertes Element oder die gesamte Auswahl aus JavaScript-Array.Beispiel: Das erste Bild im Dokument, welches ein
alt
-Attribut enthält.
$("img[alt]").get(0);
index(element)
Liefert von einer Elementauswahl den Array-Index eines bestimmten Elementes oder -1
.Beispiel: Welchen Index hat der Absatz mit der ID
absatz_2
aus der Auswahl aller Absätze?
$("p").index($("p#absatz_2"));
add(expression)
Fügt 2 Selektoren zu einer Elementauswahl zusammen.Beispiel: Alle Absätze und Anstriche ...
$("p").add("li")
not(expression)
Einschränkung die Auswahl anhand des angegeben Ausdrucks ein.
$("li").not(:contains("Text"));
filter(expression)
Analog der Verkettung von jQuery-Ausdrücken.
$("img").filter("[title*=Text]"));
slice(begin, end)
Definiert einen Ausschnitt des jQuery-Arrays, welches die selektierten Elemente enthält.Beispiel: Die Anstriche
1
bis 3
.
$("li").slice(0,2));
Einfache Filter
Filter dienen der weiteren Spezifikation für Selektoren.Filter | Beschreibung |
---|---|
li:first |
Der erste vorkommende Anstrich <li> im Dokument |
li:last |
Der letzte vorkommende Anstrich <li> im Dokument |
img:not(img:first) |
Alle Bilder im Dokument außer dem ersten Bild |
tr:even |
Alle geraden Tabellenzeilen |
tr:odd |
Alle ungeraden Tabellenzeilen |
li:eq(index) |
Der Anstrich <li> mit dem Index index |
li:gt(index) |
Alle Anstriche <li> mit dem Index größer als index |
li:lt(index) |
Alle Anstriche <li> mit dem Index kleiner als index |
:header |
Alle Überschriftenelemente (<h1>, <h2>, <h3>, ...) |
img:animated |
Alle animierten Bilder |
Inhalts-, Sichtbarkeits- und Attributfilter
Filter | Beschreibung |
---|---|
:contains(Text) |
Alle Elemente, welche den angegeben Text enthalt. *Beachte*, dass auch Elternelemente von Kindern auf welche der Ausdruck passt zurückgeliefert werden. |
:empty |
Leere Elemente, z.B. Bilder enthalten kein Textattribut |
li:has(a) |
Alle Anstriche <li>, welche einen Link <a> enthalten. *Beachte*, dass auch Elternelemente zurückgeliefert werden. |
:parent |
Alle Elemente, welche Eltern sind. Dazu gehört beispielsweise auch ein Absatz, welcher nur Text enthält. |
:hidden |
Alle nicht sichtbaren/ausgeblendeten Elemente. Dazu gehören beispielsweise auch <head> und <script>-Elemente. |
:visible |
Alle sichtbaren Elemente. |
$(img[alt]) |
Alle Bilder mit einem alt -Attribut |
$(img[title][title!="Hecht"]) |
Alle Bilder mit einem title -Attribut, außer der Inhalt des title -Attribut passt auf Hecht |
$(a[href^="http://"]) |
Alle externen Links, beginnend mit http:// |
$(a[href*="wikipedia"]) |
Alle Links, welche wikipedia enthalten |
$(img[src$="gif"]) |
Alle Bilder vom Type gif |
$(input[type="text"]) |
Alle Formularfelder vom Typ: text |
Elter-, Kindfilter
Filter | Beschreibung |
---|---|
:nth-child(index) |
Die Elemente, welche die n-ten Kinder sind. (Auch: even , odd möglich) |
:first-child |
Die jeweils ersten Kindelemente |
:last-child |
Die jeweils letzten Kindelemente |
:only-child |
Alle Einzelkinder |
Filter für Formularelemente
Speziell für Formularelemente <input> existieren Filter zum selektieren nach Typ des Elements und nach Zustand.Filter | Beschreibung |
---|---|
:input |
Alle Formularelemente (<input>, <textarea>,<select>, <button> ) |
:text |
|
:password |
|
:radio |
|
:checkbox |
|
:submit |
|
:image |
|
:reset |
|
:button |
|
:file |
|
:enabled |
Alle aktivierten Formularelemente |
:disabled |
Alle deaktivierten Formularelemente |
:checked |
Alle Checkboxen, welche den Status checked haben |
:selected |
Liefert das <option>-Element von <select>-Elementen |
weitere Methoden
Verschiedene jQuery-Filter sind auch als Methoden des jQuery-Objekts verfügbar.find(selector)
Sucht innerhalb einer Elementauswahl nach Kindern, auf welche der definierte Ausdruck passt.Beispiel: Finden in allen Absätzen ein Element mit der ID
lorem
.
$("p").find("#lorem");
is(selector)
Prüft innerhalb einer Elementauswahl, ob ein durch eine weitere Elementauswahl definiertes Element enthalten ist.Beispiel: Enthält das Dokument eine oder mehrere Tabellen?
if ($("*").is("table")) { $("#output").html("Das Dokument enthält Tabelle(n)."); }
checkbox1
angekreuzt?
if ($("#checkbox1").is(":checked")) { $("#output").html("checkbox 1 ist angekreuzt."); }