Ich habe die folgenden Funktionen in regulärem JavaScript, um ausgewählte Optionen zu erstellen. Gibt es eine Möglichkeit, dies mit jQuery zu tun, ohne das Formularobjekt verwenden zu müssen? Vielleicht speichern Sie die Optionen als Array von JSON-Objekten und analysieren dies in der aufrufenden Funktion …
function populate(form)
{
form.options.length = 0;
form.options[0] = new Option("Select a city / town in Sweden","");
form.options[1] = new Option("Melbourne","Melbourne");
}
Unten ist, wie ich die obige Funktion aufrufe:
populate(document.form.county); //county is the id of the dropdownlist to populate.
var option = $('<option/>');
option.attr({ 'value': 'myValue' }).text('myText');
$('#county').append(option);
Mit jQuery 1.4+ könnten Sie einfach Folgendes tun: $('<option/>', { value : 'myValue' }).text('myText').appendTo('#country');
– Mottie
4. Mai 2010 um 19:01 Uhr
Es ist etwas effizienter, die Liste der Optionen aufzubauen und sie dann an das DOM anzuhängen, damit Sie nicht jedes Mal einen Reflow verursachen. sehen developer.google.com/speed/articles/reflow und stackoverflow.com/questions/510213/…
– zedd45
2. April 2014 um 15:35 Uhr
Sehr elegante Art! Gut.
– Keshav
20. Mai 2017 um 15:45 Uhr
CaffGeek
Wie wäre es mit
$('#county').append(
$('<option />')
.text('Select a city / town in Sweden')
.val(''),
$('<option />')
.text('Melbourne')
.val('Melbourne')
);
Wenn Sie ein einzelnes Element erstellen müssen, können Sie diese Konstruktion verwenden:
// create the option
var opt = $("<option>").val("myvalue").text("my text");
//append option to the select element
$(#my-select).append(opt);
Dies kann auf viele Arten erfolgen, sogar in einer einzigen Zeile, wenn Sie es wirklich wollen.
Das ist verwirrend. Wenn Sie “Formularobjekt” sagen, meinen Sie “<select> element”? Wenn nicht, wird Ihr Code nicht funktionieren, also nehme ich Ihren an form Variable ist tatsächlich ein Verweis auf a <select> Element. Warum willst du diesen Code umschreiben? Was Sie haben, funktioniert seit ungefähr 1996 in allen skriptfähigen Browsern und wird in absehbarer Zeit nicht aufhören zu funktionieren. Wenn Sie dies mit jQuery tun, wird Ihr Code sofort langsamer, fehleranfälliger und weniger browserübergreifend kompatibel.
Hier ist eine Funktion, die Ihren aktuellen Code als Ausgangspunkt verwendet und eine <select> Element aus einem Objekt:
<select id="mySelect"></select>
<script type="text/javascript>
function populateSelect(select, optionsData) {
var options = select.options, o, selected;
options.length = 0;
for (var i = 0, len = optionsData.length; i < len; ++i) {
o = optionsData[i];
selected = !!o.selected;
options[i] = new Option(o.text, o.value, selected, selected);
}
}
var optionsData = [
{
text: "Select a city / town in Sweden",
value: ""
},
{
text: "Melbourne",
value: "Melbourne",
selected: true
}
];
populateSelect(document.getElementById("mySelect"), optionsData);
</script>
11789900cookie-checkJQuery neue Auswahloption erstellenyes
Mögliches Duplikat, stackoverflow.com/q/740195/425313
– Brad Koch
24. April 2013 um 3:28 Uhr