jQuery Code für jedes gefundene Element ausführen

8

Ich habe eine Liste und verwende jQuery, um alle LI in der Liste zu erhalten:

%Vor%

Wie bekomme ich es, dass ich Code ausführen, nachdem jedes Element gefunden wurde, aber kein Ereignis; so:

%Vor%

Was ist der beste Weg für mich, dies zu tun?

    
Ozzy 18.06.2011, 15:40
quelle

2 Antworten

22

Innerhalb von jQuery gibt es zwei Arten von Schleifen: explizit und implizit .

Explizite Schleifen

Explizite Schleifen sind Schleifen, die Sie explizit aufrufen. Wenn Sie ein Array von Werten haben, die Sie durchlaufen möchten, können Sie die Methode $.each() verwenden:

%Vor%

jQuery durchläuft dann alle Werte in Ihrem Array und führt anschließend eine anonyme Funktion aus. Sie übergibt zwei Werte an diese Funktion: den aktuellen Index des Werts, den es berührt, und den Wert selbst. Wenn wir also im ersten Durchlauf sind, ist der Index 0 und der Wert wird "#a" sein.

Wenn wir also angefangen haben mit:

%Vor%

Nach dem Ausführen unserer expliziten Schleife wäre unser Ergebnis:

%Vor%

Natürlich sind Sie nicht auf Arrays und andere handgefertigte Sammlungen beschränkt, wenn Sie die Methode $.empty() verwenden. Sie können diese Methode auch direkt an Ihren Selektor ketten (beachten Sie, dass dies technisch eine andere $.each() -Methode ist):

%Vor%

Diese Methode dient speziell zum Überfahren des jQuery-Objekts. Bei jeder Iteration wird das aktuelle Element in Ihrer anonymen Funktion als this verfügbar gemacht. Wenn wir unser früheres Beispiel noch einmal betrachten, hätten wir Folgendes tun können:

%Vor%

Also wird für jedes übereinstimmende Element unsere anonyme Funktion ausgeführt. jQuery wird uns einen Index übergeben, damit wir unseren Fortschritt durch die passenden Elemente verfolgen können. Beim ersten Durchlauf wird index 0 und this beziehen sich auf #a . Beim zweiten Mal wird der Index 1 sein, und this bezieht sich auf #b .

Während explizite Schleifen verlockend sind, beachten Sie, dass sie Ihrer Anwendung unnötigen Overhead hinzufügen können. jQuery führt bereits eine Schleife aus, wenn mehrere übereinstimmende Elemente vorhanden sind. Diese Schleife wird als implizite Schleife bezeichnet. Manchmal können wir sie verwenden, um unsere Anforderungen zu erfüllen und gleichzeitig die Leistung zu steigern.

Implizite Schleifen

Implizite Schleifen werden automatisch in jQuery selbst ausgeführt, zum Beispiel mit Ihrem Code:

%Vor%

jQuery führte eine Schleife über alle übereinstimmenden li -Elemente aus und setzte ihre Farbe auf "rot". Wir mussten nicht spezifisch nach einer Schleife fragen - es tut nur eine implizit. Aber nehmen wir an, "rot" war viel zu einfach und wir wollten mit jedem einzelnen Element interagieren - wir können das tun, indem wir als zweites Argument eine Funktion übergeben:

%Vor%

Unsere Funktion wird von jQuery zwei Argumente übergeben: ein Index für das aktuelle Element und der aktuelle rgb-Wert der Farbe für dieses Element. Sie könnten eine davon für die interne Logik verwenden - ich gebe einfach innerHTML von li zurück. Was wir zurückgeben, wird der neue Wert für color für dieses Element.

Wenn also unsere ungeordnete Liste so aussieht:

%Vor%

Nachdem jQuerys implizite Schleife beendet ist, wird das erste li rot, das zweite wird grün und das letzte wird blau sein.

%Vor%

Sie können dies online unter Ссылка

sehen

Abhängig davon, welche Methode Sie aufrufen, werden unterschiedliche Argumente an Ihre Funktion übergeben. Stellen Sie sicher, dass Sie die Dokumentation lesen, um zu wissen, welche Informationen Ihnen während dieser impliziten Schleifen zur Verfügung stehen.

    
Sampson 18.06.2011, 15:41
quelle
4
%Vor%     
PeeHaa 18.06.2011 15:42
quelle

Tags und Links