7

以下のコードで、jQueryを使用して条件をチェックするためのより良い方法はありますか?

if(($('#test1').val() == 'first_value')||($('#test2').val() == 'second_value') && ($('#test3').val()!='third_value')|| ($('#test4').val()!='fourth_value'))
4

4 に答える 4

5

#test1、... フィールドを再利用してさらに処理する場合など、他の懸念がない限り、あなたのものは良いはずです。

何かを行うために再度値をフェッチする場合は、DOM を再クエリする必要がないように、$('#test1') の結果を変数に格納することをお勧めします。

元:

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');
}

これにより、行の読みやすさも向上します;)

于 2012-05-15T08:41:59.610 に答える
1
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;
   }
});
于 2012-05-15T08:53:16.080 に答える
1

デモ: 別のアイデアはhttp://jsfiddle.net/h3qJB/にあります。それがどうなるか教えてください。

次のように連鎖させることもできます。

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

ド・モルガンの法則は、ロジックをもう少しコンパクトにする方法のアイデアを提供するかもしれません(具体的なケースが何であるか、または値を比較するのと同じくらい簡単かどうかはわかりませんが)。

コード

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");
于 2012-05-15T08:56:45.843 に答える
1
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

これにより、コード サイズが 25 バイト減少します;-)

于 2012-05-15T08:45:39.663 に答える