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

使用jquery将“selected”属性添加到下拉选项中

  •  0
  • rg88  · 技术社区  · 14 年前

    如何将属性“selected”添加到基于该选项匹配某个变量的下拉菜单选项中?

    下面是下拉列表的填充方式…

    loginOptions = ["First", "Second", "Third"];
            var Login = $( '#Login' );
    
            for ( var i = 0; i < loginOptions.length; i++ ) {
                Login.append('<option value="'+ loginOptions[i] +'">'+             loginOptions[i] +'</option>');
            }
    

    我想根据一个选项的值是否与另一个变量匹配,将其标记为“selected”。所以如果 loginOption[i] 等于 var existingLoginValue 然后将该选项设置为“选定”

    做点什么

    if(loginOptions[i] === existingLoginValue){ print 'selected'; };
    

    谢谢!

    3 回复  |  直到 12 年前
        1
  •  7
  •   Nick Craver    14 年前

    我会用 .val() 在方法的末尾,这将基于值进行设置,如下所示:

    $('#Login').val(existingLoginValue);
    

    同样,要获取该值,请在不使用以下任何参数的情况下调用它:

    var currentValue = $('#Login').val();
    
        2
  •  1
  •   Community dbr    7 年前

    如果你只想做一个值,那么是的, val() 作品。否则,您还可以执行以下操作:

    $option=$('<option value="'+ loginOptions[i] +'">'+ loginOptions[i]+'</option>').appendTo(Login);
    if (loginOptions[i] == existingLoginValue) {
        $option.attr('selected',true)    
    }
    

    呃,有人指出这并没有真正意义,因为这意味着有多个价值相同的选择。我想写这样的东西:

    existingLoginValues = ['foo','bar']
    $option=$('<option value="'+ loginOptions[i] +'">'+ loginOptions[i]+'</option>').appendTo(Login);
    if (existingLoginValues.indexOf(loginOptions[i]) != -1) {
        $option.attr('selected',true)    
    }
    

    这个 indexOf 除了ie6之外,大多数浏览器都支持这个功能。见 "Best way to find an item in a JavaScript Array?"

        3
  •  0
  •   Luca    12 年前

    使用

    $('#Login').selectedIndex = i