如何以三元方式转换下面的代码?
if(epaper.othermakemodel.is(':checked')){
$("#dcolor").insertAfter("#lmodel");
}else{
$("#dcolor").insertBefore("#otherlabeldiv");
}
答案 0 :(得分:5)
这样可行:
var c = epaper.othermakemodel.is(':checked');
$("#dcolor")["insert" + (c ? "After" : "Before")](c ? "#lmodel" : "#otherlabeldiv");
甚至是单行:
$("#dcolor")["insert" + (epaper.othermakemodel.is(':checked') ? "After" : "Before")](epaper.othermakemodel.is(':checked') ? "#lmodel" : "#otherlabeldiv");
然而,为了使用运算符,这只是使用三元运算符。
保持代码简短,但更重要的是,保持代码可读:
var element = $("#dcolor");
if(epaper.othermakemodel.is(':checked')){
element.insertAfter("#lmodel");
}else{
element.insertBefore("#otherlabeldiv");
}
如果你必须在一年后维护你的代码,这将使所有人都头疼。
答案 1 :(得分:2)
如果每行只有一个表达式
,则可以执行此转换condition ? // if (condition)
expr_true // expr_true;
: // else
expr_false; // expr_false;
所以你的会变成
epaper.othermakemodel.is(':checked') ?
$("#dcolor").insertAfter("#lmodel")
:
$("#dcolor").insertBefore("#otherlabeldiv");
但是,在你的情况下,它并没有真正有用。
请记住,大多数空白在 JavaScript 中没有意义,所以你甚至可以用if..else
在一行上写这个。