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

时间:2010-03-11 19:58:21

标签: javascript jquery

如何根据匹配某个变量的选项将“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>');
        }

我想根据其值是否与另一个变量匹配,将一个选项标记为“已选择”。因此,如果loginOption[i]等于var existingLoginValue,则将该选项设置为“已选择”

可以做的事

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

谢谢!

3 个答案:

答案 0 :(得分:7)

我会在你的方法结束时使用.val(),这会根据值进行设置,如下所示:

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

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

var currentValue = $('#Login').val();

答案 1 :(得分:1)

如果你只想做一个值,那么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)    
}
除了(当然)IE6之外,大多数浏览器都支持indexOf功能。见"Best way to find an item in a JavaScript Array?"

答案 2 :(得分:0)

使用

$('#Login').selectedIndex = i