jQuery: Wie man Text aus einer Dropdown-Liste (select) erhält – vollständige Analyse

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Haben Sie sich schon einmal dabei ertappt zu denken: „Warum bekomme ich den value, aber ich brauche den Text?“

\n\n

Willkommen bei PythonLib! Heute analysieren wir eines der häufigsten Probleme, mit dem sowohl Anfänger als auch erfahrene Frontend-Entwickler konfrontiert werden. Sie erstellen ein schönes Formular, fügen eine Dropdown-Liste (select box) hinzu, schreiben einen Event-Handler mit jQuery … und plötzlich stellen Sie fest, dass Sie nicht den value (Ländercode, Produkt-ID oder ähnliches) benötigen, sondern den für Menschen lesbaren Text, den der Benutzer im Menü sieht.

\n\n

Diese Frage auf Stack Overflow hat tausende Aufrufe und Dutzende Antworten gesammelt. Wir kopieren nicht einfach eine davon – wir zerlegen die Aufgabe in ihre Bestandteile, zeigen mehrere Lösungswege und liefern fertigen Code, den Sie sofort in Ihr Projekt einfügen können. Los geht's!

\n\n

Das Problem: value vs. text

\n\n

Stellen Sie sich einen typischen HTML-Code vor:

\n\n
<select id="citySelect">\n    <option value="1">Moskau</option>\n    <option value="2">Sankt Petersburg</option>\n    <option value="3">Nowosibirsk</option>\n</select>
\n\n

Wenn der Benutzer „Sankt Petersburg“ auswählt, gibt der Standard-jQuery-Code $('#citySelect').val() „2“ zurück. Was aber, wenn Sie auf der Seite genau „Sankt Petersburg“ anzeigen möchten? Oder einen lesbaren Namen an die Analytik senden? Hier beginnt die Magie der DOM-Navigation.

\n\n

Lösung Nr. 1: Der klassische Ansatz mit .text()

\n\n

Der einfachste und intuitivste Weg ist, das ausgewählte <option>-Element zu erhalten und dann dessen Textinhalt zu extrahieren.

\n\n
$('#citySelect').on('change', function() {\n    var selectedText = $(this).find('option:selected').text();\n    console.log('Sie haben ausgewählt:', selectedText);\n});
\n\n

Wie funktioniert das?
\n$(this) – Verweis auf unser select (innerhalb des Event-Handlers).
\n.find('option:selected') – suchen unter den untergeordneten option nach derjenigen mit dem Attribut selected.
\n.text() – extrahiert den reinen Text (ohne HTML-Tags).

\n\n

Bonus: Wenn Sie mehrere selects auf der Seite haben, verwenden Sie eine Klasse oder ID anstelle von this.

\n\n

Lösung Nr. 2: Verwendung von .children() und .filter()

\n\n

Manchmal ist es praktischer, über die Filterung der Kindelemente zu arbeiten. Besonders bei komplexer Verschachtelung oder benutzerdefinierten Tags.

\n\n
$('#citySelect').on('change', function() {\n    var selectedText = $(this).children('option:selected').text();\n    // Alternative mit filter:\n    // var selectedText = $(this).children('option').filter(':selected').text();\n    alert('Ausgewählte Stadt: ' + selectedText);\n});
\n\n

Der Unterschied zwischen find() und children() besteht darin, dass children() nur direkte Nachkommen betrachtet, während find() alle Nachkommen auf jeder Ebene durchsucht. Für ein Standard-select spielt das keine Rolle, aber es ist nützlich zu wissen.

\n\n

Lösung Nr. 3: Text beim Laden der Seite abrufen

\n\n

Oft soll der ausgewählte Text sofort angezeigt werden, ohne auf das change-Ereignis zu warten. Zum Beispiel bei der Initialisierung eines Formulars.

\n\n
$(document).ready(function() {\n    var initialText = $('#citySelect option:selected').text();\n    $('#selectedCityDisplay').text('Aktuelle Stadt: ' + initialText);\n});
\n\n

Dieser Code wird einmalig beim Laden des DOM ausgeführt und schreibt den Text der standardmäßig ausgewählten Option in das Element mit der ID selectedCityDisplay.

\n\n

Lösung Nr. 4: Universelle Hilfsfunktion

\n\n

Wenn Sie eine ernsthafte Anwendung schreiben, ist es sinnvoll, die Logik in eine separate Funktion auszulagern. So wird der Code sauberer und wiederverwendbar.

\n\n
function getSelectedText(selectId) {\n    return $('#' + selectId + ' option:selected').text();\n}\n\n// Verwendung:\n$('#citySelect').on('change', function() {\n    var text = getSelectedText('citySelect');\n    co                

Blogs

Buchempfehlungen