2011-05-19 41 views
3

嘿所有,我基本上需要添加一個類到每個<option>在選擇。根據每個選項的value有不同的課程。數組和循環在jquery

我需要做這樣的事情

$('select option').each(function(){ 

     if($(this).val()=="Argentina"){ $(this).addClass("ar"); } 
     if($(this).val()=="Brazil"){ $(this).addClass("br"); } 
     if($(this).val()=="Czech"){ $(this).addClass("cz"); } 

}); 

的一種簡單的方法我有一個很長的國家的名單,因此採用某種類型的數組將是可取的,然後讓在if value =功能過濾器和class name

非常感謝

回答

8

當然,使用關聯數組:

var mapping = { "Argentina": "ar", "Brazil": "br", "Czech": "cz"}; 
$('select option').each(function(){ 
    var sClass = mapping[$(this).val()]; 
    if (sClass) 
     $(this).addClass(sClass); 
}); 

if (sClass)僅僅是故障保護,以避免崩潰,當你忘了把國家在數組中。你可以在這種情況下添加一些默認類。

+0

天才。謝謝:) – Tim 2011-05-19 10:49:32

+0

你確定是一個嚮導....真棒+1 – Raja 2011-05-19 11:15:47

+0

謝謝Tim和@Raja!希望這將成爲我的第一個[很好的答案](http://stackoverflow.com/badges/23/nice-answer);) – 2011-05-19 11:21:34

2

如果模式(這個類只是小寫字母中的前兩個字符)的範例中的一個額外的意見是一個規則。

$('select option').each(function(){ 
    $(this).addClass(this.value.substr(0,2).toLowerCase()); 
}); 
+1

+1爲好主意,但怎麼樣(多個例子中的一個)「愛爾蘭」和「伊拉克」? :)編輯:甚至有3個字母..'印度'和'印度尼西亞' – 2011-05-19 11:13:26

+0

@shadow,是的,我知道它並沒有在所有國家的官方縮寫中保存很多水..我只是張貼它,以防他使用固定清單和模式適合每一種情況.. – 2011-05-19 11:16:02

+0

當然@Gaby我很清楚這一點 - 如果確實如此,我相信你的方式更好。 – 2011-05-19 11:18:08