JQuery «если» условие для проверки нескольких значений

В приведенном ниже коде есть ли лучший способ проверить условие с помощью jQuery?

if(($('#test1').val() == 'first_value')||($('#test2').val() == 'second_value') && ($('#test3').val()!='third_value')|| ($('#test4').val()!='fourth_value'))
 pomeh15 мая 2012 г., 10:40
Я думаю, что ваш вопрос может быть опубликован наcodereview.stackexchange.com вместо stackoverflow
 Matt15 мая 2012 г., 10:41
Нет ничего встроенного, нет.

Ответы на вопрос(4)

Demo: просто другая идея вhttp://jsfiddle.net/h3qJB/, Пожалуйста, дайте мне знать, как это происходит.

Вы также можете сделать цепочку, как:

$('#test1, #test2, #test3, #test4').each(function(){ //...use this.value here  });

Это может бытьЗаконы де Моргана дает вам представление о том, как сделать логику немного более компактной (хотя я не уверен, что является конкретным случаемor это так же просто, как сравнение значений).

Code
var boolean1 = (($('#test1').val() == 'first_value')||($('#test2').val() == 'second_value'))

var boolean2 = (($('#test3').val()!='third_value')|| ($('#test4').val()!='fourth_value'))

if (boolean1 && boolean2)
    alert("bingo");
else
    alert("buzzinga");

например, если вы будете повторно использовать поля # test1, ... для дальнейшей обработки, ваши проблемы должны быть хорошими.

Если вы снова выберете любое из значений, чтобы сделать что-то, я бы порекомендовал сохранить результат $ ('test1') в переменной, чтобы вам не нужно было запрашивать dom.

Пример:

var t1 = $('#test1');
if((t1.val() == 'first_value')||($('#test2').val() == 'second_value') && ($('#test3').val()!='third_value')|| ($('#test4').val()!='fourth_value')) {
    t1.val('Set new value');
}

Это также улучшает читаемость строки;)

var values = ['first_value', 'second_value', 'third_value', 'fourth_value'];
$('#test1, #test2, #test3, #test4').each(function(index, el) {
   if($.inArray(this.value, values)) {
     // do some job;
     return false; // or break;
   }
});
 15 мая 2012 г., 12:17
@ user1060990 обновить мой ответ, вы хотите что-то подобное?
 user106099015 мая 2012 г., 11:50
Просто хотел добавить кое-что, что я использую четыре разных идентификатора ...
var c=0, b='#test', a=['first_value','second_value','third_value','fourth_value'];
for(var i=0; i<4; i++)
    if($(b+i).val() == a[i])
        c=1;
if (c) //Do stuff here

 15 мая 2012 г., 10:55
Для компактного кода я бы рекомендовал использовать минификатор, такой как компилятор Google Closure. Написание такого компактного кода supoer делает сценарии очень сложными для поддержки с течением времени.

Ваш ответ на вопрос