DOM-Elemente erstellen, bearbeiten und einfügen

Problem

Sie wollen ein oder mehrere neue DOM-Elemente erstellen, die direkt selektiert sind, um sie dann zu bearbeiten und in das DOM einzufügen.

Lösung

Vielleicht haben Sie es noch nicht bemerkt: Die jQuery-Funktion besitzt viele Facetten. Sie verhält sich abhängig vom Aufbau der Parameter sehr unterschiedlich. Übergeben Sie der Funktion einen Text-String mit HTML-Code, dann werden diese Elemente direkt erzeugt. So wird zum Beispiel mit der folgenden Anweisung ein <a>-Element innerhalb eines <p>-Elements erstellt, wobei sich ganz innen noch ein Textknoten befindet:

jQuery('<p><a>jQuery</a></p>');

Mit den so erzeugten Elementen können Sie nun jQuery-Methoden nutzen, um damit zu arbeiten. Es ist so, als ob Sie das neue <p>-Element in einem bestehenden HTML-Dokument selektiert hätten. So könnten wir zum Beispiel mit dem <a> arbeiten, indem wir die Methode .find() nutzen, um das Element <a> zu selektieren und dann eines seiner Attribute zu setzen. Mit dem folgenden Code setzen wir das Attribut href auf den Wert http://www.jquery.com:

jQuery('<p><a>jQuery</a></p>').find('a').attr('href','http://www.jquery.com');

Das ist klasse, oder? Nun, es wird noch besser, denn bisher haben wir nur spontan Elemente erzeugt und bearbeitet. Wir haben aber noch nicht das aktuell geladene DOM geändert. Dazu müssen wir die Bearbeitungsmethoden von jQuery nutzen. Im Folgenden sehen Sie unseren Code im Kontext eines HTML-Dokun ments. Dabei erzeugen wir Elemente, bearbeiten sie und fügen sie dann mit der Bearbeitungs-Methode appendTo() in das DOM ein:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<script type="text/JavaScript" 
src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/JavaScript">
jQuery('<p><a>jQuery</a></p>').find('a').attr('href','http://www.jquery.com')
  .end().appendTo('body');
</script>
</body>
</html>

Beachten Sie, wie wir hier die Methode end() nutzen, um die Methode find() rückgängig zu machen. Wenn nun ein Aufruf von appendTo() erfolgt, wird alles angehängt, was ursprünglich im ersten Wrapper-Set enthalten war.

Diskussion

In diesem Rezept haben wir der jQuery-Funktion einen HTML-String übergeben, aus dem DOM-Elemente erzeugt wurden. Es ist auch möglich, der jQuery-Funktion ein DOM-Objekt zu übergeben, das von der DOM-Methode createElement() erzeugt wurde:

jQuery(document.createElement('p')).appendTo('body'); //hängt ein leeres p-Element an die
                                                      //Seite an

Das kann natürlich ziemlich mühsam sein, wenn doch ein HTML-String mit mehreren Elementen wunderbar funktioniert.

Es sei darauf hingewiesen, dass wir hier bezüglich der Bearbeitungs-Methoden mit appendTo() nur an der Oberfläche gekratzt haben. Neben appendTo() gibt es noch folgende Bearbeitungs-Methoden:

  • append()
  • prepend()
  • prependTo()
  • after()
  • before()
  • insertAfter()
  • insertBefore()
  • wrap()
  • wrapAll()
  • wrapInner()
JQuery Kochbuch
titlepage.xhtml
part0000.html
part0001.html
part0002_split_000.html
part0002_split_001.html
part0002_split_002.html
part0003_split_000.html
part0003_split_001.html
part0003_split_002.html
part0003_split_003.html
part0003_split_004.html
part0003_split_005.html
part0003_split_006.html
part0003_split_007.html
part0004_split_000.html
part0004_split_001.html
part0004_split_002.html
part0004_split_003.html
part0004_split_004.html
part0004_split_005.html
part0004_split_006.html
part0004_split_007.html
part0004_split_008.html
part0004_split_009.html
part0004_split_010.html
part0004_split_011.html
part0004_split_012.html
part0004_split_013.html
part0004_split_014.html
part0004_split_015.html
part0004_split_016.html
part0004_split_017.html
part0004_split_018.html
part0005_split_000.html
part0005_split_001.html
part0005_split_002.html
part0005_split_003.html
part0005_split_004.html
part0005_split_005.html
part0005_split_006.html
part0005_split_007.html
part0005_split_008.html
part0005_split_009.html
part0005_split_010.html
part0005_split_011.html
part0005_split_012.html
part0005_split_013.html
part0006_split_000.html
part0006_split_001.html
part0006_split_002.html
part0006_split_003.html
part0006_split_004.html
part0006_split_005.html
part0006_split_006.html
part0006_split_007.html
part0006_split_008.html
part0006_split_009.html
part0006_split_010.html
part0007_split_000.html
part0007_split_001.html
part0007_split_002.html
part0007_split_003.html
part0007_split_004.html
part0007_split_005.html
part0007_split_006.html
part0007_split_007.html
part0007_split_008.html
part0007_split_009.html
part0007_split_010.html
part0007_split_011.html
part0008_split_000.html
part0008_split_001.html
part0008_split_002.html
part0008_split_003.html
part0008_split_004.html
part0008_split_005.html
part0008_split_006.html
part0008_split_007.html
part0008_split_008.html
part0008_split_009.html
part0008_split_010.html
part0008_split_011.html
part0008_split_012.html
part0008_split_013.html
part0008_split_014.html
part0008_split_015.html
part0008_split_016.html
part0008_split_017.html
part0008_split_018.html
part0008_split_019.html
part0008_split_020.html
part0008_split_021.html
part0008_split_022.html
part0009_split_000.html
part0009_split_001.html
part0009_split_002.html
part0009_split_003.html
part0009_split_004.html
part0009_split_005.html
part0009_split_006.html
part0009_split_007.html
part0009_split_008.html
part0009_split_009.html
part0009_split_010.html
part0010_split_000.html
part0010_split_001.html
part0010_split_002.html
part0010_split_003.html
part0010_split_004.html
part0010_split_005.html
part0010_split_006.html
part0010_split_007.html
part0010_split_008.html
part0010_split_009.html
part0010_split_010.html
part0010_split_011.html
part0011_split_000.html
part0011_split_001.html
part0011_split_002.html
part0011_split_003.html
part0011_split_004.html
part0011_split_005.html
part0011_split_006.html
part0011_split_007.html
part0011_split_008.html
part0011_split_009.html
part0011_split_010.html
part0011_split_011.html
part0012_split_000.html
part0012_split_001.html
part0012_split_002.html
part0012_split_003.html
part0012_split_004.html
part0012_split_005.html
part0012_split_006.html
part0012_split_007.html
part0012_split_008.html
part0013_split_000.html
part0013_split_001.html
part0013_split_002.html
part0013_split_003.html
part0013_split_004.html
part0013_split_005.html
part0013_split_006.html
part0013_split_007.html
part0013_split_008.html
part0013_split_009.html
part0013_split_010.html
part0013_split_011.html
part0013_split_012.html
part0014_split_000.html
part0014_split_001.html
part0014_split_002.html
part0014_split_003.html
part0014_split_004.html
part0014_split_005.html
part0014_split_006.html
part0014_split_007.html
part0014_split_008.html
part0014_split_009.html
part0014_split_010.html
part0014_split_011.html
part0015_split_000.html
part0015_split_001.html
part0015_split_002.html
part0015_split_003.html
part0015_split_004.html
part0015_split_005.html
part0015_split_006.html
part0015_split_007.html
part0015_split_008.html
part0015_split_009.html
part0015_split_010.html
part0016_split_000.html
part0016_split_001.html
part0016_split_002.html
part0016_split_003.html
part0016_split_004.html
part0016_split_005.html
part0016_split_006.html
part0016_split_007.html
part0016_split_008.html
part0016_split_009.html
part0017_split_000.html
part0017_split_001.html
part0017_split_002.html
part0017_split_003.html
part0017_split_004.html
part0017_split_005.html
part0017_split_006.html
part0017_split_007.html
part0017_split_008.html
part0017_split_009.html
part0017_split_010.html
part0017_split_011.html
part0018_split_000.html
part0018_split_001.html
part0018_split_002.html
part0018_split_003.html
part0018_split_004.html
part0018_split_005.html
part0018_split_006.html
part0019_split_000.html
part0019_split_001.html
part0019_split_002.html
part0019_split_003.html
part0019_split_004.html
part0019_split_005.html
part0019_split_006.html
part0019_split_007.html
part0019_split_008.html
part0019_split_009.html
part0019_split_010.html
part0020_split_000.html
part0020_split_001.html
part0020_split_002.html
part0020_split_003.html
part0020_split_004.html
part0020_split_005.html
part0020_split_006.html
part0020_split_007.html
part0020_split_008.html
part0021_split_000.html
part0021_split_001.html
part0021_split_002.html
part0021_split_003.html
part0021_split_004.html
part0021_split_005.html
part0021_split_006.html
part0021_split_007.html
part0021_split_008.html
part0021_split_009.html
part0022.html
part0023.html
part0024.html
part0025.html