相关疑难解决方法(0)

jQuery无法通过<option>元素上的attr()设置"selected"="selected"?

<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 jquery-selectors

8
推荐指数
1
解决办法
3万
查看次数

使用jQuery在option元素上设置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)

还有其他或更好的方法吗?

jquery select attributes option

6
推荐指数
1
解决办法
5902
查看次数

标签 统计

jquery ×2

attributes ×1

jquery-selectors ×1

option ×1

select ×1