2013-01-31 45 views
0

我已經成功地實現了多條件三元運算符垂直與水平之間的洗牌類,如下所示:如何洗牌在JavaScript三元運算符多個值

的jQuery:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#my_div") 
    .removeClass("horizontal vertical") 
    .addClass(['red', 'blue', 'green', 'gray'].indexOf(my_color) != -1 ? 'horizontal' : 'vertical'); 
}); 
</script> 

my_color的可能在一個價值時間從紅色,藍色,綠色,灰色白色和黑色。如上所述,horizontal爲前4 my_color值,vertical爲其他。現在我想添加和刪除第三類elliptical,其中水平,垂直和橢圓僅爲my_color的2個值設置。我如何修改我的上面的腳本或者可以使用switch語句實現相同的功能?

+0

SO從水池中選擇紅色/藍色/綠色/灰色拉,從白色,黑色池垂直拉? – Walls

+0

是的。現在我想要從綠色/灰色的紅色/藍色垂直和黑色/白色的橢圓中選擇水平。 – galexy

+0

其實我爲了多種條件洗牌兩個班,所以我想洗牌多個班。只要我們可以通過if語句來獲得它。但我不想用if語句編寫冗長的代碼。 – galexy

回答

1

可以使用toggleClass與開關容易地增加/刪除的類:如果顏色相匹配陣列

$(document).ready(function() { 
    var colors = ['red', 'blue', 'green', 'gray']; 
    $("#my_div") 
     .toggleClass('horizontal', colors.indexOf(my_color) != -1) 
     .toggleClass('vertical', colors.indexOf(my_color) == -1) 
     .toggleClass('elliptical', [colors[0], colors[1]].indexOf(my_color) != -1); 
}); 

第一類被添加,並且如果不消除,第二是相對,並且第三加入如果顏色第一匹配或第二個數組值。 array.indexOf在所有瀏覽器中都不受支持,您應該使用polyfill。

+0

這很好,但隨後橢圓與水平以及垂直相交[顏色[0],顏色[1]]。 – galexy

+0

@galexy - 是的,我認爲這是關鍵,如果它不是一個常規的if/else可能更簡單。 – adeneo

+0

那麼如何編寫簡單的switch語句來刪除當前的類,並相對於條件集添加類。如果我們不得不在三個css類之間爲多個值的池作爲條件進行混洗,我認爲switch會更好。 – galexy