1232 Stimmen

Wie entfernt man alle Optionen eines Auswahlfeldes und fügt dann eine Option hinzu und wählt sie mit jQuery aus?

Mit Kern jQuery, wie Sie alle Optionen eines Auswahlfeldes zu entfernen, dann fügen Sie eine Option und wählen Sie es?

Meine Auswahlbox ist die folgende.

<Select id="mySelect" size="9"> </Select>

EDIT: Der folgende Code war bei der Verkettung hilfreich. Allerdings (im Internet Explorer) .val('whatever') die hinzugefügte Option nicht ausgewählt hat. (Ich habe in beiden Fällen denselben "Wert" verwendet .append y .val .)

$('#mySelect').find('option').remove().end()
.append('<option value="whatever">text</option>').val('whatever');

EDIT: Versuchen, es zu bekommen, um diesen Code zu imitieren, verwende ich den folgenden Code, wenn die Seite/Formular zurückgesetzt wird. Dieses Auswahlfeld wird durch eine Reihe von Optionsfeldern ausgefüllt. .focus() war näher, aber die Option erschien nicht ausgewählt, wie es bei .selected= "true" . Nichts ist falsch mit meinem bestehenden Code - ich bin nur versuchen, jQuery zu lernen.

var mySelect = document.getElementById('mySelect');
mySelect.options.length = 0;
mySelect.options[0] = new Option ("Foo (only choice)", "Foo");
mySelect.options[0].selected="true";

EDIT: Die ausgewählte Antwort kam dem, was ich brauchte, sehr nahe. Das hat bei mir funktioniert:

$('#mySelect').children().remove().end()
.append('<option selected value="whatever">text</option>') ;

Aber beide Antworten führten mich zu meiner endgültigen Lösung

1865voto

Matt Punkte 30565
$('#mySelect')
    .find('option')
    .remove()
    .end()
    .append('<option value="whatever">text</option>')
    .val('whatever')
;

809voto

Mahzilla Punkte 7669
$('#mySelect')
    .empty()
    .append('<option selected="selected" value="whatever">text</option>')
;

160voto

Shawn Punkte 2794

Warum nicht einfach Javascript verwenden?

document.getElementById("selectID").options.length = 0;

111voto

mauretto Punkte 2975

Wenn Ihr Ziel darin besteht, alle Optionen aus der Auswahl zu entfernen, mit Ausnahme der ersten (in der Regel die Option "Bitte wählen Sie ein Element"), können Sie diese Option verwenden:

$('#mySelect').find('option:not(:first)').remove();

86voto

row1 Punkte 5488

Ich hatte einen Fehler in IE7 (funktioniert gut in IE6), wo die Verwendung der oben genannten jQuery-Methoden würde die Wählen Sie im DOM, aber nicht auf dem Bildschirm. Mit der IE Developer Toolbar konnte ich bestätigen, dass die Wählen Sie gelöscht worden war und die neuen Elemente enthielt, aber visuell die Wählen Sie wurden die alten Artikel weiterhin angezeigt, auch wenn man sie nicht auswählen konnte.

Die Lösung war die Verwendung von Standard-DOM-Methoden/Properites (wie das Poster Original hatte) zu löschen, anstatt jQuery - noch mit jQuery, um Optionen hinzuzufügen.

$('#mySelect')[0].options.length = 0;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X