代码之家  ›  专栏  ›  技术社区  ›  sunn0

使用jquery将选项元素上的选定属性设置为real

  •  6
  • sunn0  · 技术社区  · 14 年前

    我正在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);
    });
    

    还有其他更好的方法吗?

    1 回复  |  直到 14 年前
        1
  •  9
  •   user113716    14 年前

    native setAttribute() method

    <option> <select> options collection

    sel[0].options[1].setAttribute('selected','selected');
    

    native selectedIndex property

    sel.val(1);
    sel[0].options[sel[0].selectedIndex].setAttribute('selected','selected');
    

    <

    $("<option>",{
        value: i,
        html: v
    }).appendTo(sel);