Felix Riesterer: jQuery Variablenübergabe (mal wieder)

Beitrag lesen

Lieber bobby,

Und ja, elem ist global

das wird das Problem sein. Du machst mit elem an anderer Stelle etwas, was dann in den gekapselten Funktionen (den "closures") den Variableninhalt verändert, sodass bei deren Ausführung kein vernünftiger Inhalt mehr zur Verfügung steht.

Warum muss elem global sein?

Im Notfall könntest Du "mit Gewalt" eine Funktion basteln, in der der Inhalt von elem an eine andere und nur in dieser Funktion vorhandene Variable übergeben wird:

var elem = $("#elem");

// wir bauen uns eine gleich ausgeführte Funktion
[elem].forEach(function (_elem) {
    // _elem ist nun "gegen außen geschützt"
    tuWas(_elem);
});

// wir bauen uns noch eine Funktion...
function (_elem) {
    // _elem ist nun "gegen außen geschützt"
    tuWas(_elem);

}(elem); // ... und führen sie gleich aus (mit Parameter)

Wie Du das machst, ist mir egal. Am besten wird der Verzicht auf globale Variablen sein. Vielleicht kannst Du sogar Objekte definieren, die Daten bereithalten und die Logik Deiner Applikation abbilden?

Liebe Grüße,

Felix Riesterer.