Heim > Web-Frontend > js-Tutorial > Wie greife ich mithilfe von JavaScript-Closures und jQuery korrekt in Schleifen auf externe Variablen zu?

Wie greife ich mithilfe von JavaScript-Closures und jQuery korrekt in Schleifen auf externe Variablen zu?

Linda Hamilton
Freigeben: 2024-10-20 08:57:02
Original
805 Leute haben es durchsucht

How to Access External Variables Correctly in Loops Using JavaScript Closures and jQuery?

Zugriff auf externe Variablen in Schleifen über JavaScript-Abschlüsse

In JavaScript kann die Manipulation von Variablen innerhalb von Abschlüssen und Schleifen eine Herausforderung darstellen. Dieser Artikel befasst sich mit einem häufigen Problem, bei dem der Zugriff auf Variablen in einer Schleife aufgrund des Variablenbereichs zu unerwarteten Werten führt.

Beachten Sie den folgenden Codeausschnitt:

<code class="javascript">for (var i in this.items) {
    var item = this.items[i];
    // ...
    $("#showcasebutton_" + item.id).click(function() {
        alert(item.id);
        self.switchto(item.id);
    });
}</code>
Nach dem Login kopieren

Wenn Sie auf eine der von erstellten Schaltflächen klicken In der Schleife zeigt die Alarmfunktion immer die ID des letzten Elements im Array an. Dies liegt daran, dass sich das variable Element bei jeder Iteration ändert und sich zum Zeitpunkt der Auslösung des Klickereignisses auf das letzte Element bezieht.

Um dieses Problem zu lösen, können wir Schließungen verwenden. Abschlüsse sind Funktionen, die andere Funktionen zurückgeben und häufig zum Erstellen lokalisierter Bereiche für Variablen verwendet werden. Durch Ändern des Codes können wir das variable Element in einem Abschluss einkapseln:

<code class="javascript">for (var i in this.items) {
    var item = this.items[i];
    // ...
    $("#showcasebutton_" + item.id).click(
        (function(item) {
             return function() {
                alert(item.id);
                self.switchto(item.id);
             };
        })(item)
    );
}</code>
Nach dem Login kopieren

Innerhalb der inneren Funktion wird das variable Element als Parameter erfasst, wodurch effektiv ein lokalisierter Bereich erstellt wird. Dadurch wird sichergestellt, dass beim Auslösen des Klickereignisses auf das richtige Elementobjekt zugegriffen wird, das dieser Schaltfläche zugeordnet ist.

Alternativ können Sie die $.each()-Hilfsfunktion von jQuery nutzen, die den Iterations- und Variablen-Scoping-Prozess vereinfacht :

<code class="javascript">$.each(this.items,function(i, item) {
    // ...
    $("#showcasebutton_" + item.id).click(function() {
        alert(item.id);
        self.switchto(item.id);
    });
});</code>
Nach dem Login kopieren

In diesem Fall wird item als Parameter an die Funktion übergeben, um den richtigen Umfang sicherzustellen und das ursprüngliche Problem zu lösen.

Das obige ist der detaillierte Inhalt vonWie greife ich mithilfe von JavaScript-Closures und jQuery korrekt in Schleifen auf externe Variablen zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage