A jQuery 'if' condition to check multiple values

后端 未结 4 1501
长发绾君心
长发绾君心 2021-01-18 14:55

In the code below, is there a better way to check the condition using jQuery?

if(($(\'#test1\').val() == \'first_value\')||($(\'#test2\').val() == \'second_v         


        
相关标签:
4条回答
  • 2021-01-18 15:17

    Unless there are other concerns, like if you will reuse the #test1, ... fields for more processing, yours should be good.

    If you will fetch any of the values again to do something I would recommend storing the $('#test1') result in a variable so that you do not need to requery the dom.

    Ex:

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

    This also improves readability of the row ;)

    0 讨论(0)
  • 2021-01-18 15:30

    Demo: just another idea is at http://jsfiddle.net/h3qJB/. Please let me know how it goes.

    You can also do chaining like:

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

    It might be that De Morgan's laws gives you an idea of how to make the logic a bit more compact (although I am not sure what is the specific case or is it as simple as comparing values).

    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");
    
    0 讨论(0)
  • 2021-01-18 15:34
    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;
       }
    });
    
    0 讨论(0)
  • 2021-01-18 15:36
    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
    

    This will decrease your code size by 25 bytes;-)

    0 讨论(0)
提交回复
热议问题