907 Stimmen

Hinzufügen von Optionen zu einem <select> mit jQuery?

Wie fügt man am einfachsten eine option zu einem Dropdown mit jQuery?

Wird das funktionieren?

$("#mySelect").append('<option value=1>My option</option>');

30 Stimmen

Oder verwenden Sie $("#mySelect").html(....) um die aktuellen Optionen durch die neuen zu ersetzen.

0 Stimmen

Warum nicht einfach? $('<option/>').val(optVal).text('some option').appendTo('#mySelect')

39voto

Abrar Jahin Punkte 13034

Option 1-

Versuchen Sie Folgendes.

$('#selectID').append($('<option>',
 {
    value: value_variable,
    text : text_variable
}));

Etwa so.

for (i = 0; i < 10; i++)
{ 
     $('#mySelect').append($('<option>',
     {
        value: i,
        text : "Option "+i 
    }));
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<select id='mySelect'></select>

Option 2-

Oder versuchen Sie dies.

$('#selectID').append( '<option value="'+value_variable+'">'+text_variable+'</option>' );

Etwa so.

for (i = 0; i < 10; i++)
{ 
     $('#mySelect').append( '<option value="'+i+'">'+'Option '+i+'</option>' );
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<select id='mySelect'></select>

20voto

Russ Cam Punkte 120837

Das funktioniert gut.

Wenn Sie mehr als ein Optionselement hinzufügen, empfehle ich, die Anfügung einmal durchzuführen, anstatt für jedes Element eine Anfügung vorzunehmen.

18voto

Warum nicht einfach?

$('<option/>')
  .val(optionVal)
  .text('some option')
  .appendTo('#mySelect')

18voto

Aus welchen Gründen auch immer tun $("#myselect").append(new Option("text", "text")); funktioniert bei mir im IE7+ nicht

Ich musste die $("#myselect").html("<option value='text'>text</option>");

0 Stimmen

Ich verwende dieselbe Syntax (new Option(...)) im Android Chrome Browser (auf einem Telefon) und es funktioniert auch dort nicht.

18voto

John Magnolia Punkte 16486

Um die Leistung zu verbessern, sollten Sie versuchen, das DOM nur einmal zu ändern, vor allem, wenn Sie viele Optionen hinzufügen.

var html = '';

for (var i = 0, len = data.length; i < len; ++i) {
    html.join('<option value="' + data[i]['value'] + '">' + data[i]['label'] + '</option>');
}           

$('#select').append(html);

1 Stimmen

Um die Leistung zu verbessern, sollten Sie string.join() für die Verkettung von Zeichenketten

2 Stimmen

Dies ist eine großartige Lösung. Ich hatte ein Problem mit "join()" im Beispiel nicht eine gültige Funktion, aber diese Lösung ermöglicht es Ihnen, ein jQuery "Versprechen" zu verwenden, um zu bestimmen, wenn alle Optionen hinzugefügt wurden und das DOM fertig ist Aktualisierung. Bei den anderen Lösungen, die Optionen nacheinander hinzufügen, ist dies nicht so einfach möglich. Ersetzen Sie die letzte Zeile im Beispiel durch die folgende, um eine Aktion erst nach Abschluss der DOM-Änderung durchzuführen: $.when($('#select').append(html)).done(function () { callSomeFunctionThatRequiresOptionsToBeSet() });

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