Den Kontext-Parameter verwenden

Problem

Sie haben zwar schon vom Kontext-Parameter gehört, haben aber noch keine Situation gefunden, in der er nützlich ist.

Lösung

Beim Übergeben eines Selektions-Ausdruck an jQuery() oder $() können Sie auch ein zweites Argument mitgeben, das den Kontext festlegt. Der Kontext ist der Bereich, in dem jQuery nach den Elementen sucht, die Ihr Selektions-Ausdruck finden soll.

Der Kontext-Parameter ist das angesichts seiner Nützlichkeit vermutlich am wenigsten angewandte jQuery-Feature. Dabei ist seine Anwendung denkbar einfach: Sie übergeben einen Selektions-Ausdruck, ein jQuery-Objekt, eine DOM-Collection oder einen DOM-Knoten und jQuery wird nur in diesem Rahmen nach den Elementen suchen.

Hier ein Beispiel, in dem Sie alle Eingabe-Felder in einer Form selektieren wollen, bevor es abgeschickt wird:

jQuery('form').bind('submit', function(){
    var allInputs = jQuery('input', this);
    // Jetzt können Sie etwas mit 'allInputs' machen
});

Beachten Sie, dass als zweites Argument this übergeben wurde. In diesem Handler bezieht sich this dabei auf das Form-Element. Da es als Kontext übergeben wird, gibt jQuery nur input-Elemente innerhalb dieses Forms zurück. Hätten wir es nicht übergeben, würden alle input-Elemente des Dokuments selektiert – was wir natürlich nicht wollen.

Wie schon erwähnt können Sie auch einen normalen Selektor als Kontext übergeben:

jQuery('p', '#content');

Dieser Code liefert das Gleiche zurück wie der folgende Selektor:

jQuery('#content p');

Durch die Angabe eines Kontext können sich Lesbarkeit und Geschwindigkeit verbessern. Es ist manchmal durchaus hilfreich, dieses Feature zu kennen!

Diskussion

Der von jQuery genutzte Standard-Kontext ist document, also das oberste Element der DOM-Hierarchie. Geben Sie nur dann einen Kontext an, wenn sich dieser vom Standardwert unterscheiden soll. Ein Kontext kann dabei auch wie folgt genutzt werden:

jQuery( context ).find( selector );

Genau das passiert auch hinter den Kulissen von jQuery.

Haben Sie also schon eine Referenz auf den Kontext, sollten Sie diesen anstatt eines Selektors übergeben – es ist nicht sinnvoll, jQuery den Selektionsprozess nochmals durchlaufen zu lassen.

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