Manipulation von Elementen
Im folgenden Kapitel werden wir uns mit der Manipulation von Elementeigenschaften und -attributen beschäftigen.Voraussetzung dafür ist die Auswahl von Elementen wie im vorherigen Kapitel beschrieben.
Attribute
In der HTML-Beschreibung eines Elements werden Attribute angegeben, welche das Aussehen des Elements beschreiben. Der Browser übersetzt die HTML-Beschreibung in ein DOM-Element.<img id="logo_1" src="/bilder/logo.jpg" alt="Logo" title="Firmenlogo" class="ohne_Rand" />
img
für den TagName und id
, src
, alt
, title
und class
beschreiben die Elementattribute.
each(iterator)
Mit dem each()
-Kommando wird die elementweise Bearbeitung einer Auswahlliste (array
) unterstützt. Der iterator
entspricht dem Index des Arrays.Beispiel: Gibt für alle Bilder deren Index und ID-Attribut aus.
$("img").each(function(index) { $("#output").append("Bild Nr: " + index + " mit der ID: " + this.id + "<br/>"); });
this
stellt innerhalb einer Funktion eine Referenz auf das aktuelle Objekt (DOM-Element) zur Verfügung, welches mit der Funktion assoziiert ist.
attr(name, [value])
Liefert das Attribut, dessen Name als Argument übergeben wird, oder setzt das Attribut bei Übergabe eines Name-Wert-Paares.Beispiel: Setze das
title
-Attribut aller Elemente im Dokument durch eine String, welcher den Index und die ID enthält.
$("*").attr("title", function(index) { return "Ich bin Element " + index + " und meine ID ist " + (this.id ? this.id : "unbekannt"); });
{ attribut: 'value', attribut: 'value', ... }
$("a[href^='http://']").attr("target", "_blank");
$("img#scholle").click(function() { $(this).attr("src", "image/hecht.jpg"); });
prop(name, [value])
Liefert den Wert der übergebenen Eigenschaft oder setzt deren Wert.Eigenschaften wie
selectedIndex
, tagName
, nodeName
, nodeType
, ownerDocument
, defaultChecked
und defaultSelected
werden mit der Methode prop()
gelesen oder manipuliert.
$("input[type='checkbox']").prop("checked", function( i, val ) { return !val; });
removeAttr(name)
Löscht das Attribut mit dem als Argument übergebenem Namen.
Klassen und CSS-Eigenschaften
Klassen bieten eine einfache Möglichkeit, Elemente zu selektieren.Die Darstellung von Elementen kann über die Eigenschaften von CSS-Klassen modifiziert werden. jQuery enthält außerdem Funktionen zur Manipulation von CSS-Eigenschaften an DOM-Elementen. (vergleiche
attr()
-Funktion.)
addClass(name)
$("p").addClass("red_border blue_text yellow_bg");
removeClass(name)
$("p").removeClass("yellow_bg");
toggleClass(name)
Fügt die als Argument übergebene Klasse den Elementen hinzu, welche dieser Klasse nicht angehören und entfernt die Elemente welche der Elementauswahl und der übergebenen Klasse angehören.Beispiel: Die erste Zeile erzeugt eine "gestreifte" Tabelle.
$("table tr:nth-child(odd)").addClass("yellow_bg"); $("table").click(function() { $("table tr").toggleClass("yellow_bg"); });
css(name, [value])
Liefert die CSS-Eigenschaft für das übergebene Attribut oder setzte eine die CSS-Eigenschaft für ein Name-Wert-Paar. (vergleiche attr()
-Funktion)
$("#output").html("Der Absatz hatte die Textfarbe: " + $("p").css("color")); $("p").css("color", "#00ff00");
width([value])
und height([value])
Liefert oder setzt die Breite und Höhe der ausgewählten Elemente.Beispiel: Absätze
<p>
werden rot umrandet, deren Breite ausgegeben und bei jedem Klick in den Absatz die Höhe und Breite verändert.
$("p").addClass("red_border"); $("#output").html("Der Absatz hatte eine Breite von " + $("p").width() + " px"); $("p").click(function() { $(this).width($(this).width()-50 +"px"); $(this).height($(this).height()+10 +"px"); });
hasClass(name)
Liefert einen Wahrheitswert (true=/=false
) über die Zugehörigkeit eines Elements zu einer als Attribut übergebenen Klasse.
if ($("p").hasClass("red_border")) { $("#output").html("Der Absatz gehört der Klasse red_border an"); }
Elementinhalt
Funktionen zur Manipulation von Elementinhalten.html([content])
Liefert den HTML-Inhalt des ersten ausgewählten Elements der Elementauswahl
oder setzt den HTML-Inhalt aller Element der Elementauswahl.Interessant für DEBUG-Ausgaben im Zusammanhang mit
<span>
und <div>
-Elementen .Beispiel: Ersetze für alle Links
<a>
den Linktext durch einen String mit dem URL (href
-Attribut).
$("a").html(function() { return "ein Link auf: " + $(this).attr("href"); });
$("#output").html($("td").html());
$("td").each(function() { $("#output").append($(this).html()+"<br/>"); });
text([content])
Liefert oder ersetzt den Textinhalt aller zur Elementauswahl gehörenden Elemente (inklusiver der untergeordneten Elemente).
$("#output").html("Inhalt der Anstriche: " + $("ul").text());
html()
und der text()
-Funktion liegt in der Behandlung von HTML-Elementen (<Elemente>
in spitzen Klammern). Die text()
-Funktion liefert den Inhalt ohne HTML-Formatierung.
append(content)
Füge den Inhalt am Ende des ausgewählten Elementes oder der ausgewählten Elemente ein.
Der Inhalt kann auch ein neues Element sein (Einfügen erfolgt innerhalb, als letztes Kindelement). Beispiel: Hänge an alle Absätze
<p>
ein zu erstellendes Element <b>Absatzende</b>
.
$("p").append("<b>Absatzende</b>");
appendTo(target)
Füge ausgewähltes oder zu erstellendes Element am Ende des als Argument übergebenen Elementes oder
der übergebenen Elemente ein (innerhalb, als letztes Kindelement).Beispiel: Hänge an alle untergeordneten Anstriche das Bild mit der ID
scholle
<img#scholle>
.
$("img#scholle").appendTo("li li");
Beachte: Element-IDs evtl. nicht mehr eindeutig, Eventhandler, ...
prepend(content)
und prependTo(target)
Funktionen arbeiten analog zu append()
, appendTo()
aber fügen die Elemente am Anfang als erstes Kindelement ein.
after(content)
und insertAfter(target)
Funktionen fügen ausgewähltes oder zu erstellendes DOM-Element nach dem
angegeben Ziel ein.
$("li:last").after("<li>weiterer Anstrich</li>");
before(content)
und insertBefore(target)
Funktionen arbeiten analog zu after()
, insertAfter()
aber fügen die Elemente vor dem angegeben Ziel ein.
wrap(content)
Die Funktion wrap()
umschließt die ausgewählten Zielelemente mit dem als
Argument angegebenem oder zu erstellendem Element.Beispiel: Umschliesse alle Links
<a>
mit einem <span>
-Element der Klasse yellow_bg
und dem Text "Link: ".
$("a").wrap('<span class="yellow_bg">Link: </span>');
wrapInner(content)
Die Funktion wrapInner()
umschließt den Textinhalt des ausgewählten Zielelemente mit dem als
Argument angegebenem oder zu erstellendem Element.remove()
Entfernt ein Element oder ein Set ausgewählter Elemente aus dem DOM-Baum.
Als Rückgabewert wird ein jQuery-Objekt auf das oder die Elemente geliefert.Beispiel: Löscht alle Absätze
<p>
und fügt diese als Kindelement der letzten Tabellenzelle <td>
wieder ein.
$("p").remove().appendTo("td:last");
empty()
Entfernt den Textinhalt des ausgewählten Elements oder der ausgewählten Elemente.
Das Element verbleibt im DOM-Baum.
clone([boolean])
Erzeugt eine Kopie des ausgewählten Elements oder der ausgewählten Elemente.
Als Argument kann ein Wahrheitswert (true
, false
) angegeben werden um
auf der Quelle vorhandene Eventhandler zu kopieren.Beispiel: Erzeuge eine Kopie des ersten Bildes
<img>
und füge die
Kopie als Kind des Elementes mit der ID output
ein.
$("img:first").clone().appendTo("#output")
Formularelemente
val([value])
Liefert oder setzt den Wert (value
-Eigenschaft) von Formularfeldern.Beispiel: Setze einen Wert für das Formularfeld mit der ID
textfeld
. Gibt
den Wert des Formularfeldes mit der ID textfeld
im Element mit der ID output
aus.
$("input#textfeld").val("Ein Wert"); $("#output").text("Textfeld: " + $("input#textfeld").val());
var select = $("#selectbox").val(); for (i=0; i<select.length; i++){ $("#output").append(select[i] + "<br/>"); }
checked
bzw. selected
.
$("input:checkbox,select").val(['Kescher','Angelschnur und Haken','Drilling']);
DOM-Element und jQuery-Objekt
this |
Referenz auf das aktuelle Objekt (DOM-Element) innerhalb einer Funktion. z.B. Referenz auf ein Bild img , Zugriff auf Attribute: img.id , img.src , img.alt |
$(this) |
Erzeugt ein jQuery-Objekt aus dem aktuellen DOM-Element. Damit sind jQuery-Methoden verfügbar. z.B. $(this).addClass("myclass") |
console.log()
in Verbindung mit der FireBug-Konsole analysieren. (siehe auch https://getfirebug.com/logging/)
$("a:first").each(function() { console.log(this); console.log($(this)); });
Methoden und Funktionen
$("p:first").html() |
Liefert den HTML-Inhalt (innerHTML-Attribut) des ausgewählten DOM-Elements (im Beispiel der erste Absatz) |
$("p:first").html("Erster Absatz") |
Setzt den HTML-Inhalt des ausgewählten DOM-Elements mit dem übergebenen Inhalt |
$("p").html(function(i, v) { |
Funktion iteriert über alle ausgewählten DOM-Elemente (im Beispiel alle Absätze). Innerhalb der Funktion sind die Argumente Index i (beginnend mit 0) und der Rückgabewert der Methode .html() als Value v (im Beispiel der alte HTML-Inhalt) verfügbar. Der Rückgabewert der Funktion wird als neuer HTML-Inhalt an das aktuelle DOM-Element übergeben. |