2016-05-26 7 views
0

Wie würde ich dies mit einem ternären Operator schreiben?Schreiben von if/else-Anweisung als ternären Operator

if (!$('#privacy_check').is(':checked')) { 
 
    $('#privacy_check').css('outline-color', 'red'); 
 
    $('#privacy_check').css('outline-style', 'solid'); 
 
    $('#privacy_check').css('outline-width', 'thin'); 
 
} else { 
 
    $('#privacy_check').css('outline-color', 'none'); 
 
    $('#privacy_check').css('outline-style', 'none'); 
 
    $('#privacy_check').css('outline-width', '0'); 
 
}

Ich habe

versucht

!$('#privacy_check').is(':checked') ? $('#privacy_check').css('outline-color', 'red'); $('#privacy_check').css('outline-style', 'solid');$('#privacy_check').css('outline-width', 'thin') : 
 
$('#privacy_check').css('outline-color', 'none');$('#privacy_check').css('outline-style', 'none');$('#privacy_check').css('outline-width', '0');

+0

ternäre Operator wertet auf einen Wert. Möchten Sie, dass dies einen Wert auswertet? – thefourtheye

+0

Nicht. Es wird es einfach schwieriger machen, ohne Vorteil zu lesen – Liam

+0

ok, also vielleicht am besten als normale 'if/else-Anweisung 'zu verlassen. Vielen Dank! –

Antwort

0
var $elem = $('#privacy_check'); 
$elem.css($elem.is(':checked') ? 
    { outlineColor: 'none', outlineStyle: 'none', outlineWidth: 0 } : 
    { outlineColor: 'red', outlineStyle: 'solid', outlineWidth: 'thin' }) 
4

vereinfachen.

CSS:

#privacy_check { 
    outline: thin solid red; 
} 
#privacy_check:checked { 
    outline: none; 
} 

Kein JavaScript erforderlich.

+0

Ok, aber er fragte nach einer Javascript-basierten Lösung O.o –

+0

Entschuldigung, Sie müssen die Frage falsch verstanden haben. Ich möchte nur das rot zeigen, wenn es nicht überprüft wird –

+0

@NiettheDarkAbsol ich habe prob nicht genügend Informationen in der Frage zur Verfügung gestellt, um fair zu sein. Ich möchte nur die rote zeigen, nachdem ein Versuch gemacht wird, das Formular zu senden –

0

Sie können etwas tun, wie diese

$('#privacy_check').change(function() { 
 
    $(this).css({ 
 
    'outline-color': this.checked ? 'none' : 'red', 
 
    'outline-style': this.checked ? 'none' : 'solid', 
 
    'outline-width': this.checked ? '0' : 'thin' 
 
    }); 
 
}).change()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="checkbox" id="privacy_check" />


Mehr vereinfacht als @Rayon vorgeschlagen

$('#privacy_check').change(function() { 
 
    $(this).css("outline", this.checked ? 'none' : "thin solid red") 
 
}).change()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="checkbox" id="privacy_check" />

+0

Betrachte '$ (" # privacy_check "). Css (" outline "," thin solid red ");" ..Ich denke, es wird redundanten Code reduzieren. – Rayon

0

Versuchen Sie folgendes:

var $elem = $('#privacy_check'); 

if($elem.is(":checked")){ 
    $elem.css("outline", "thin solid red"); 
} 
else{ 
    $elem.css("outline", "none"); 
} 
+0

Du legst '$ ('# privacy_check') in eine Variable, aber habe es nicht benutzt: DI habe es für dich repariert. –

+0

Ja, danke. Mein Fehler –

Verwandte Themen