Ich erstelle eine Auswahlliste mit Optionselementen in jQuery. Vereinfacht sieht es so aus:Setzen des ausgewählten Attributs auf einem Optionselement für Real mit jQuery
var sel = $("<select>");
$.each(data, function(i, v){
$("<option>").attr({ "value": i }).html(v).appendTo(sel);
});
Dann möchte ich eine Option ausgewählt werden. Normalerweise würde ich etwas tun wie:
$(sel).val(1);
Aber dann die Option nicht das ausgewählte Attribut vorhanden.
$(sel).html()
gibt so etwas wie:
<option value="1">1</option>
<option value="2">2</option>
und das ist, was ich erwartet hatte:
<option value="1" selected="selected">1</option>
<option value="2">2</option>
ich diesen Ansatz versucht (gleiche Ergebnis wie mit .val()):
$.each(data, function(i, v){
var attrs = { "value": i };
if(i == 1){
attrs.selected = "selected";
}
$("<option>").attr(attrs).html(v).appendTo(sel);
});
aber der einzige Weg, fand ich Arbeits ist:
$.each(data, function(i, v){
var el = "<option>";
if(i == 1){
el = '<option selected="selected"></option>';
}
$(el).attr({ "value": i }).html(v).appendTo(sel);
});
Gibt es einen anderen oder besseren Weg?
+1 - http://jsfiddle.net/QFFeF/1/ – karim79
Hat die jQuery-Quelle und -Attr-Abschnitte überprüft, wenn sie ausgewählt wurde, und verwendet auch selectedIndex. Danke für die Antwort - einfach zu vergessen, dass es eine Zeit vor jQuery gab :) – sunn0