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