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.