2010-03-11 79 views
0

如何根據與某個變量匹配的選項將「selected」屬性添加到下拉菜單選項?使用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'; }; 

謝謝!

回答

7

我在你的方法結束使用.val(),基於價值這一集,像這樣:

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

同樣,獲得的價值,把它沒有任何像這樣的參數:

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

這是一個很好的解決方案。希望我能想到這一點,而不是浪費時間玩弄選定的設置。謝謝! – Stuart 2010-03-11 20:24:37

0

使用

$('#Login').selectedIndex = i 
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)  
} 

indexOf功能在大多數瀏覽器都支持,除了(當然)IE6。請參閱"Best way to find an item in a JavaScript Array?"

+0

...什麼時候有兩個選項具有相同的確切值?在他的代碼中有3個不同的選項。 – 2010-03-11 20:12:18

+0

哦,很好的電話。現在編輯我的答案... – 2010-03-16 18:21:32

相關問題