2011-05-19 42 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