как я могу преобразовать приведенный ниже код тройным способом?
if(epaper.othermakemodel.is(':checked')){
$("#dcolor").insertAfter("#lmodel");
}else{
$("#dcolor").insertBefore("#otherlabeldiv");
}
Это будет работать:
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");
}
Это спасет всех участников головной боли, если вам нужно будет поддерживать свой код через год.
Вы можете сделать это преобразование, когда у вас есть только одно выражение на строку
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
.