缩短jQuery if else条件

时间:2017-07-20 10:43:06

标签: javascript jquery

我们如何改进以下if-else代码:

$(".rdo_confirm").change(function(){  
    if($(this).val() == "Y") {
      $("#btn_save").attr("disabled",false);
    } else {
        $("#btn_save").attr("disabled",true);
    }
});

3 个答案:

答案 0 :(得分:12)

您可以直接使用检查值,因为它返回一个布尔值

$(".rdo_confirm").on('change', function(){  
    $("#btn_save").prop("disabled", this.value !== "Y");
});

$(this).val() == "Y"的检查会返回truefalse 如果支票返回false,您似乎想要传递true,这意味着您只是否定支票。
使用原生javascript,结果就像this.value !== "Y" 由于disabled是一个属性,您还想使用prop()

答案 1 :(得分:1)

您可以将此条件代码压缩为1行代码,分为两种方式,看看:

使用三元运算符:

$(".rdo_confirm").change(function(){  

$(this).val() == "Y")? $("#btn_save").attr("disabled",false):$("#btn_save").attr("disabled",true);

});

使用简单条件:

$(".rdo_confirm").change(function(){  
var cond=(this.value !== "Y");
$(this).val() == "Y")? $("#btn_save").attr("disabled",cond);

答案 2 :(得分:0)

$(".rdo_confirm").on('change',function(){  
   $("#btn_save").prop("disabled",!($(this).val()=="Y"));
});
$("#btn_save").on('click',function(){  
   alert("test");
});
span{
padding-right:20px
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input class="rdo_confirm" type="radio" name="rdo_confirm" value="Y"/><span>Yes</span>
<input class="rdo_confirm" type="radio" name="rdo_confirm" value="N"/><span>No</span>
<input id="btn_save" type="button"  value="Click"/>