Auf DOM Element warten

Um zu erfahren, ob ein Element im Document Object Model (DOM) vorhanden ist, ist bei jQuery die Eigenschaft length nützlich. Der Rückgabewert ist true, wenn das Element im DOM existiert.

Um einen event handler erfolgreich an ein bestimmtes Element anzubinden, muss dieses logischerweise im DOM vorhanden sein. Wird das Element dynamisch geladen, ist dieses nicht von anfang an existent. Um nun zu verhindern, dass der event handler ins Leere läuft, ist zu prüfen, ob das Element vorhanden ist.

Die Funktion function waitForEl(selector, callback, maxTimes = false) prüft dies jede Sekunde, bis das Element gefunden wurde und die Iteration per Callback beendet wird:

@param selector (z.B. ‚#delayEl‘)
@param callback (wird aufgerufen sobald DOM Element vorhanden oder maxTimes == 0)
@param maxTimes (Anzahl maximaler Iterationen, deaktivieren: false. Achtung: Stackbomb!)

Zeile 3-7: soll einen dynamisch geladenen Content simulieren, der erst nach 5 Sekunden im DOM auftaucht.
Zeile 9-22: prüft, ob Element im DOM vorhanden
Zeile 24-38: Event handler „keyup“ und „click“ werden angehängt, sobald das Element #delayEl im DOM vorhanden ist.

Das Beispiel bei Codepen zeigt zusätzlich einen zu früh angehängten event handler – bevor das Element #one im DOM überhaupt vorhanden ist. Im Gegensatz dazu, kopiert der funktionierende event handler des Elements #two das value in das unterste Input Feld.

See the Pen
Wait for Element
by Erhard Sigrist (@anderenbenutzer)
on CodePen.