Я создаю список выбора с элементами option в jQuery. Упрощенно это выглядит так:
var sel = $("<select>");
$.each(data, function(i, v){
$("<option>").attr({ "value": i }).html(v).appendTo(sel);
});
Тогда я хочу выбрать опцию. Обычно я бы сделал что-то вроде:
$(sel).val(1);
Но тогда у опции нет выбранного атрибута.
$(sel).html()
дает что-то вроде:
<option value="1">1</option>
<option value="2">2</option>
и это то, что я ожидал:
<option value="1" selected="selected">1</option>
<option value="2">2</option>
Я попробовал этот подход (тот же результат, что и при использовании .val ()):
$.each(data, function(i, v){
var attrs = { "value": i };
if(i == 1){
attrs.selected = "selected";
}
$("<option>").attr(attrs).html(v).appendTo(sel);
});
но единственный способ найти работу - это:
$.each(data, function(i, v){
var el = "<option>";
if(i == 1){
el = '<option selected="selected"></option>';
}
$(el).attr({ "value": i }).html(v).appendTo(sel);
});
Есть ли другой или лучший способ?