⊗jqBsEM 30 of 113 menu

Arbeit mit der each-Methode in jQuery

Wenn wir eine Gruppe von Elementen haben, die mit jQuery abgerufen wurden, können wir Änderungen nur für alle Elemente gleichzeitig vornehmen.

Wenn wir beispielsweise den Text aller gefundenen Absätze ändern möchten, können wir ihn nicht unterschiedlich gestalten.

In diesem Fall hilft uns die spezielle Methode each, die es erlaubt, eine bestimmte Funktion auf alle Elemente eines jQuery-Sets anzuwenden. Innerhalb dieser Funktion können wir die Elemente unterscheiden und mit jedem von ihnen unterschiedlich verfahren.

Im Wesentlichen ist each eine Schleife, mit der alle gefundenen Elemente durchlaufen werden können. Der Verweis auf das Element, das gerade von der Schleife verarbeitet wird, befindet sich in this.

Wir können dieses this einfach in purem JavaScript verwenden, wie wir es früher getan haben, zum Beispiel so - this.innerHTML - und den inneren Inhalt unserer Elemente ausgeben. Aber es ist besser, this in jQuery-Dollar einzuhüllen, auf diese Weise - $(this) - in diesem Fall können wir alle jQuery-Methoden und -Verkettungen darauf anwenden.

Betrachten wir den folgenden HTML-Code:

<p class="www">text</p> <p class="www">text</p> <p class="www">text</p> <p>text</p>

In diesem Beispiel müssen wir alle Elemente mit der Klasse www abrufen und ihren Inhalt auf dem Bildschirm ausgeben. So wird es gemacht: Mit $('.www') erhalten wir die gewünschten Elemente, dann wenden wir mit each(test) die Funktion test auf jedes erhaltene Element an. Zuerst wird sie auf den ersten Absatz angewendet, dann auf den zweiten, den dritten und so weiter.

Innerhalb der Funktion zeigt this auf das Element, auf das die Funktion test angewendet wird - zuerst ist es das erste Element, dann das zweite, und so weiter. Mit einer solchen Konstruktion $(this) erhalten wir anstelle eines normalen this von JavaScript ein jQuery-Element und wenden darauf die Methode html an, die den Text unseres Elements erhält. Nun, danach wird er einfach auf dem Bildschirm ausgegeben:

/* Den Funktionsnamen test schreiben wir ohne Anführungszeichen und (), da wir ihren Code benötigen, nicht das Ergebnis: */ $('.www').each(test); function test() { alert($(this).html()); }

Um diese Aufgabe zu lösen, können auch anonyme Funktionen verwendet werden - das wird am häufigsten gemacht:

$('.www').each(function() { alert($(this).html()); });

Wir können der each-Methode auch eine Callback-Funktion mit Parametern übergeben.

Lassen Sie uns im nächsten Beispiel am Ende aller li auf der Seite ihre Ordnungsnummer hinzufügen. Nun werden wir in unsere anonyme Funktion die Nummer des Elements und das Element selbst übergeben:

$('li').each(function (index, elem) { $(elem).append(index); });

Und jetzt verwenden wir anstelle von elem this:

$('li').each(function (index) { $(this).append(index); });

Ändern Sie den Inhalt aller li auf ihre Ordnungsnummer.

bydeenesfrptru