2011-10-05 71 views
1

我有這個腳本,在html中我選擇了選項值1,2,3,4,5,我想顯示/隱藏其他對象,但我不想爲每個對象使用不同的代碼值:jquery多個值

$('#x').change(function() { 
     $("#xx")[$(this).val() == "5" ? 'show' : 'hide']("fast"); 
    }).change(); 

我需要的是從VAL設置多個值()== 「5」 爲val()== 「1,2,3,4,5」 但是這是行不通的。

我該怎麼做?

+0

更清楚。當值爲1,2,3或4時,你想要發生什麼? –

回答

4

在其最簡單的,你可以只用邏輯或||多個值:

$("#xx")[$(this).val() == "5" || $(this).val() == "4" ? 'show' : 'hide']("fast"); 

但隨着多個值這個很快變得很長。在最起碼你應該存儲$(this).val()一個變量和比較:

var val = $(this).val(); 
$("#xx")[val == "5" || val == "4" ? 'show' : 'hide']("fast"); 

但同樣這將讓漫長而笨拙非常快。更好的選擇是存儲可能值的數組,並檢查val()是任何數組中的值:

var values = ["1","2","3","4","5"]; 
var val = $(this).val(); 
$("#xx")[$.inArray(val,values) != -1 ? 'show' : 'hide']("fast"); 
+0

非常感謝你,你是偉大的人:) –

0

您可以使用開關:

$('#x').change(function() { 
     var currVal = $(this).val(); 

switch(currVal){ 
case 1: 
//your code 
     break;  
case 2: 
//your code 
     break; 
case 3: 
//your code 
     break; 
case 4: 
//your code 
     break; 
case 5: 
//your code 
     break; 
    } 
}); 
1

你可以拆分字符串所以它是一個數組,並使用indexOf並在沒有它的瀏覽器上實現它(信息位於我所比較的頁面上)。或者使用jquerys $.inArray方法。