2014-01-09 2 views
-3

Я хочу, чтобы это сделатьЯ хочу поставить в переменных множественное значение

if ($(this).val() in (1,2,3)) { 
    ... 
} 

Я попробовал это, и это работает, но это не то, что я хочу

if ($(this).val()==1 || $(this).val()==2 || $(this).val()==3) { 
    ...   
} 
+0

Вы можете кэшировать '$ (это) .val()' в локальной переменной, то ваше условное выражение будет как производительный и читаемым , –

ответ

1

Используйте массив и $.inArray():

if ($.inArray(parseInt($(this).val()), [1, 2, 3]) > -1) { 

} 
0
if ([1,2,3].indexOf($(this).val()) > -1) { 

или

for (i in [1,2,3]) 
    if (i==$(this).val()) { 
     ... 
    } 
3

Я замечаю OP использует JQuery, но это должно работать для тех, кто не является

if([1,2,3].indexOf(yourValue) > -1) { 
    ... 
} 

Редактировать, Гах, избили Blazemonger 20 секунд

1

ПЫТАТЬ синтезировать информацию, которая в настоящее время разбросана в разных ответах и ​​комментариях ... Ваш код не работает из-за двух вещей:

  1. Вы используете in который проверяет ключи, а не значения в массиве. Так, например, 3 in [1,2,3] будет ложным, так как [1,2,3] имеет ключи (индексы) 0,1,2.
  2. Вполне возможно, что ваше значение является строкой

Решение, чтобы убедиться, что ваше значение имеет правильный тип, и использовать правильную функцию. Есть два очевидных варианта:

indexOf   - returns the index of the (first) element that matches 
inArray   - is available if you are using jQuery 

Пример кода:

var v = parseInt($(this).val()); // radix 10 
var r = [1,2,3];     // the values to check against 

if(r.indexOf(v) > -1) {  // method 1 

if($.inArray(v, r)) {  // method 2 
Смежные вопросы