Mire mA, ningún operador ternario!
Lo siguiente funciona porque Javascript cortocircuita las expresiones booleanas.
Si something == string1
luego evaluar string2
- desde string2
es un valor Truthy y la siguiente expresión implica la operación OR no hay necesidad de continuar. Detener y devolver string2
.
Si something !== string1
omite el siguiente operando porque si es falso, no tiene sentido evaluar el siguiente operando (con Y). "Saltará" a la operación OR y devolverá string1
.
function toggleString(something, string1, string2) {
return something == string1 && string2 || string1;
}
something.val(toggleString(something.val(), "string1", "string2"));
Si desea que la asignación de hecho:
function toggleValue(something, string1, string2) {
something.val(something.val() == string1 && string2 || string1);
}
toggleValue(something, "string1", "string2"); // something is a jQuery collection
En el final, sin embargo, iba a terminar con el operador ternario porque esta solución podría ser poco claro para otros programadores. Si proviene de Java u otros idiomas, puede esperar que la función devuelva un valor booleano debido a todos los operadores booleanos.
Exactamente lo que estaba buscando - gracias! – Bojangles
Pero esto establecerá 'string1' aunque el valor sea' string3', no solo para 'string2' –
@ dev-null-dweller esto no es un problema - Alternaré el texto en un botón entre 'Responder' y 'Cancelar' :) – Bojangles