<select>
<option>1</option>
<option>2</option>
<option class="test">3</option>
</select>
$('.test').attr('selected', 'selected');?
Run Code Online (Sandbox Code Playgroud)
上面的选择框会选择第三个选项作为默认选项而不会出现任何问题.但是,如果使用Firebug检查元素,selected="selected"则所选内容中不存在任何属性<option>.
我知道这不是一个大问题,因为它仍然有效,但我需要selected="selected"那里,所以我的其他脚本可以捕获它并执行进一步处理.那里有解决方法吗?
谢谢.
我正在jQuery中生成带有选项元素的选择列表.简化它看起来像这样:
var sel = $("<select>");
$.each(data, function(i, v){
$("<option>").attr({ "value": i }).html(v).appendTo(sel);
});
Run Code Online (Sandbox Code Playgroud)
然后我想要一个选项.通常我会做类似的事情:
$(sel).val(1);
Run Code Online (Sandbox Code Playgroud)
但是该选项没有选定的属性.
$(sel).html() 给出类似的东西:
<option value="1">1</option>
<option value="2">2</option>
Run Code Online (Sandbox Code Playgroud)
这就是我的预期:
<option value="1" selected="selected">1</option>
<option value="2">2</option>
Run Code Online (Sandbox Code Playgroud)
我尝试了这种方法(与使用.val()相同的结果):
$.each(data, function(i, v){
var attrs = { "value": i };
if(i == 1){
attrs.selected = "selected";
}
$("<option>").attr(attrs).html(v).appendTo(sel);
});
Run Code Online (Sandbox Code Playgroud)
但我找到工作的唯一方法是:
$.each(data, function(i, v){
var el = "<option>";
if(i == 1){
el = '<option selected="selected"></option>';
}
$(el).attr({ "value": i }).html(v).appendTo(sel);
});
Run Code Online (Sandbox Code Playgroud)
还有其他或更好的方法吗?